Python 绘制直方图

Python 绘制直方图,python,matplotlib,graph,histogram,Python,Matplotlib,Graph,Histogram,我试图用mu和sigma绘制直方图 我试着使用y轴上的ec_分数值,它应该显示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,

我试图用mu和sigma绘制直方图

我试着使用y轴上的ec_分数值,它应该显示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()
目前,图表如下所示:

正如@benton在评论中提到的,您可以将ec_分数绘制为:

看起来是这样的:

还可以通过向
yerr
参数传递数组来添加错误条。我在上面链接的条形图示例中对此进行了说明。我不知道你到底想用normpdf做什么,但是条形图会返回一个矩形列表而不是箱子,所以你可能需要根据你的代码来调整它


我希望这会有所帮助。

根据定义,直方图在y轴上绘制“计数”。似乎您想要概率,这意味着您想要使用条形图函数而不是直方图函数。@benten这根本不是真的。绘制直方图和概率密度是完全有效的。我认为OP是在寻找
标准化的
kwarg(见或)我站着纠正。“柱状图也可以标准化显示相对频率。”此外,柱状图优先用于分类数据,而柱状图优先用于连续数据。从matplotlib的角度来看,您可以使用其中任何一个生成相同的图片,但仍然很有趣。也谢谢你。
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()