matplotlib.hist()
関数を使用してヒストグラムをプロットしようとしていますが、その方法がわかりません。
リストがあります
probability = [0.3602150537634409, 0.42028985507246375,
0.373117033603708, 0.36813186813186816, 0.32517482517482516,
0.4175257731958763, 0.41025641025641024, 0.39408866995073893,
0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327,
0.35398230088495575]
そして名前のリスト(文字列)。
確率を各バーのY値、名前をX値にするにはどうすればよいですか。
ヒストグラムが必要な場合は、x軸にはビンがあるので、x値に「名前」を付ける必要はありません。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.random.normal(size = 1000)
plt.hist(x, normed=True, bins=30)
plt.ylabel('Probability');
しかし、データ点の数が限られていて棒グラフが必要な場合は、x軸にラベルを付けることができます。
x = np.arange(3)
plt.bar(x, height= [1,2,3])
plt.xticks(x+.5, ['a','b','c'])
これであなたの問題が解決するかどうか教えてください。
編集2018年11月26日
下記のコメントの通り、Matplotlib 3.0.2では以下のコードで十分です。
x = np.arange(3)
plt.bar(x, height= [1,2,3])
plt.xticks(x, ['a','b','c']) # no need to add .5 anymore
編集2019年5月23日
ヒストグラムに関する限り、normed
パラメータは推奨されません。
MatplotlibDeprecationWarning: 'normed' kwargはMatplotlib 2.1では非推奨であり、3.1では削除される予定です。代わりに 'density'を使用してください。
だから、代わりにMatplolib 3.1
からのように:
plt.hist(x, normed=True, bins=30)
書く必要があります:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.random.normal(size = 1000)
plt.hist(x, density=True, bins=30) # density
plt.ylabel('Probability');
まだmatplotlibをインストールしていない場合は、コマンドを試してください。
> pip install matplotlib
import matplotlib.pyplot as plot
plot.hist(weightList,density=1, bins=20)
plot.axis([50, 110, 0, 0.06])
#axis([xmin,xmax,ymin,ymax])
plot.xlabel('Weight')
plot.ylabel('Probability')
plot.show()
これは非常に簡単なやり方ですが、bin値を知っていてもソースデータを持っていないヒストグラムを作成したい場合は、np.random.randint
関数を使用して以下の範囲内の正しい値の数を生成できます。 hist関数の各ビンをグラフ化します。例えば、
import numpy as np
import matplotlib.pyplot as plt
data = [np.random.randint(0, 9, *desired y value*), np.random.randint(10, 19, *desired y value*), etc..]
plt.hist(data, histtype='stepfilled', bins=[0, 10, etc..])
ラベルのようにあなたはこのような何かを得るためにビンとxの目盛りを整列させることができます:
#The following will align labels to the center of each bar with bin intervals of 10
plt.xticks([5, 15, etc.. ], ['Label 1', 'Label 2', etc.. ])