2016-09-17 12 views
2

私はmuとsigmaでヒストグラムをプロットしようとしています。ヒストグラムをプロットする

y軸にec_scoresの値を使用しようとしましたが、0.1〜1.0と表示されていました。 y軸に1,2,3,4,5,6という数字が表示されます。 Imは何のエラーも受けていませんが、グラフを完全に投げ捨てています。私を助けて、私が間違っていることを教えてください。グラフを適切に生成するにはどうすればいいですか?おかげさまで

これは私のコードです:

import numpy as np 

import matplotlib.pyplot as plt 

import matplotlib.mlab as mlab 

x = np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) 

ec_scores = np.array([1., 1., 1., 0.95923677, 0.94796184, 1., 0.76669558, 1., 0.99913194, 1.]) 

mu, sigma = (np.mean(ec_scores), np.std(ec_scores)) 


fig = plt.figure() 

ax = fig.add_subplot(111) 

n, bins, patches = ax.hist(x, 50, normed=1, facecolor='blue', alpha=0.75) 


bincenters = 0.5*(bins[1:]+bins[:-1]) 

y = mlab.normpdf(bincenters, mu, sigma) 

l = ax.plot(bincenters, y, 'r--', linewidth=1) 

ax.set_xlabel('Parameters') 

ax.set_ylabel('EC scores ') 

plt.plot(x, ec_scores) 

ax.grid(True) 

plt.show() 

は現在、グラフは次のようになります。コメントで@bentonで述べたように enter image description here

+2

ヒストグラムは、定義上、y軸上に「カウント」をプロットします。確率を求めているようです。つまり、ヒストグラム関数ではなく、バープロット関数を使いたいということです。 – benten

+0

@bentenこれはまったく真実ではありません。ヒストグラムをプロットすることで、確率密度は完全に有効です。私はOPが「正常な」kwargを探していると思う(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.histまたはhttps://stackoverflow.com/questions/5498008/pylab- histdata-normed-1-normalisation-work-incorrectと思われます) – tacaswell

+0

私は訂正しました。 [ウィキペディアから](https://en.wikipedia.org/wiki/Histogram) "ヒストグラムは、相対頻度を表示して正規化することもできます。"また、棒グラフはカテゴリデータには好ましく、ヒストグラムは連続データに優先します。 matplotlibの観点からは、どちらの画像でも同じ画像を生成できますが、すべて同じです。ありがとうtacaswell。 – benten

答えて

1

、あなたはbarchartとしてec_scoresをプロットすることができます

import numpy as np 
import matplotlib.pyplot as plt 

x = np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) 
ec_scores = np.array([1., 1., 1., 0.95923677, 0.94796184, 1., 0.76669558, 1., 0.99913194, 1.]) 
mu, sigma = (np.mean(ec_scores), np.std(ec_scores)) 

fig = plt.figure() 
ax = fig.add_subplot(111) 
rects = ax.bar(x, ec_scores, width=0.1, align='center', facecolor='blue', alpha=0.75) 

ax.set_xlabel('Parameters') 
ax.set_ylabel('EC scores ') 
ax.grid(True) 

plt.show() 

これは次のようになります。 Plotted as a barplot.

yerrパラメータに配列を渡すことでエラーバーを追加することもできます。これは上記のBarchartの例で説明しています。私はnormpdfを使って何をしようとしているのかよく分かりませんが、barchartはビンの代わりに長方形のリストを返しますので、これをあなたのコードに適用する必要があります。

こちらがお役に立てば幸いです。

関連する問題