2016-09-17 244 views
2

我想繪製一個直方圖與畝和西格瑪。繪製直方圖

我試着在y軸上使用ec_scores值,它應該給我看0.1到1.0 它給我的是y軸上的1,2,3,4,5,6。 我沒有得到任何錯誤,但這是完全拋棄圖。請協助我,告訴我我做錯了什麼,如何才能讓圖形正確生成。 謝謝。

這是我的代碼:

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() 

目前該圖是這樣的: enter image description here

+2

直方圖根據定義繪製y軸上的「計數」。它似乎你想要的概率,這意味着你想要使用barplot函數,而不是直方圖函數。 – benten

+0

@benten這根本不是真的。繪製直方圖的概率密度是完全有效的。我認爲OP正在尋找'normed' kwarg(請參閱http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.hist或https://stackoverflow.com/questions/5498008/pylab- histdata-normed-1-normalization-seem-to-work-incorrect) – tacaswell

+0

我站好了。 [來自維基百科](https://en.wikipedia.org/wiki/Histogram)「直方圖也可以標準化,顯示相對頻率。」另外,分類數據優選條形圖,而連續數據優選直方圖。從matplotlib的角度來看,你可以用任何一種方式生成相同的圖片,但是都很有趣。感謝tacaswell。 – benten

回答

1

正如意見中提到的@benton,您可以繪製ec_scores作爲barchart

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參數來添加錯誤欄。這在上面鏈接的條形圖示例中進行了說明。我不確定你想要用normpdf做什麼,但是條形圖返回一個矩形列表而不是箱子,所以你可能需要適應你的代碼。

我希望這會有所幫助。