28

カウントデータ(100個)があり、それぞれがビン(0〜99)に対応しています。これらのデータをヒストグラムとしてプロットする必要があります。ただし、データが既にビニングされているため、ヒストグラムはそれらのデータをカウントし、正しくプロットしません。

import random
import matplotlib.pyplot as plt
x = random.sample(range(1000), 100)
xbins = [0, len(x)]
#plt.hist(x, bins=xbins, color = 'blue') 
#Does not make the histogram correct. It counts the occurances of the individual counts. 

plt.plot(x)
#plot works but I need this in histogram format
plt.show()
4

6 に答える 6

37

あなたが正しく達成したいことを私が理解しているなら、あなたが望むものは次のとおりです。

import matplotlib.pyplot as plt
plt.bar(range(0,100), x)
plt.show()

は使用しませんがhist()、既にデータをビンに入れているように見えるので、必要はありません。

于 2012-09-06T16:05:14.913 に答える
12

問題はxbinにあります。あなたは現在持っています

xbins = [0, len(x)]

リスト[0、100]が表示されます。これは、下が0、上が100で囲まれた1つのビン(2つではない)のみが表示されることを意味します。ヒストグラムから何が必要か完全にはわかりません。2つの不等間隔のビンが必要な場合は、次を使用できます。

xbins = [0, 100, 1000]

1つのビンに100未満のすべてを表示し、他のビンに他のすべてを表示します。別のオプションは、整数値を使用して、一定数の等間隔のビンを取得することです。言い換えれば、

plt.hist(x, bins=50, color='blue')

ここで、binsは目的のビンの数です。

ちなみに、matplotlibで何かをする方法を思い出せないときは、通常、サムネイルギャラリーにアクセスして、私が達成しようとしていることを多かれ少なかれ見せる例を見つけます。これらの例にはすべてソースコードが付属しているため、非常に役立ちます。matplotlibのドキュメントも非常に便利です。

于 2012-09-06T16:01:16.613 に答える
7

かっこいい、ありがとう!OPがやりたかったことは次のとおりです。

import random
import matplotlib.pyplot as plt
x=[x/1000 for x in random.sample(range(100000),100)]
xbins=range(0,len(x))
plt.hist(x, bins=xbins, color='blue')
plt.show()
于 2013-11-13T02:34:21.610 に答える
2

私はあなたの問題がゴミ箱であるとかなり確信しています。これは制限のリストではなく、ビンのエッジのリストです。

xbins = [0,len(x)]

あなたの場合、0にビンエッジと100に1つのビンエッジが必要であることを示すリストを返します[0, 100]。したがって、0から100までの1つのビンを取得します。必要なものは次のとおりです。

xbins = [x for x in range(len(x))]

どちらが返されますか:

[0,1,2,3, ... 99]

これは、必要なビンのエッジを示します。

于 2012-09-06T16:02:51.790 に答える
1

これは、matplotlib の hist を使用しても実現できます。numpy は必要ありません。基本的に、ビンは既に として作成されていxbinsます。この場合x、あなたの重みになります。

plt.hist(xbins,weights=x)
于 2016-06-27T14:29:39.470 に答える
0

matplotlib ドキュメントのヒストグラムの例を見てください。関数を使用する必要がありhistます。デフォルトで期待する結果が得られない場合は、 への引数をhistいじって、 にデータを提供する前にデータを準備/変換/変更しますhist。あなたが何を達成したいのかはっきりしていないので、現時点ではお手伝いできません。

于 2012-09-06T15:44:12.963 に答える