Python 绘制直方图
我试图用mu和sigma绘制直方图 我试着使用y轴上的ec_分数值,它应该显示0.1到1.0 它给了我y轴上的1,2,3,4,5,6。 我没有得到任何错误,但这是完全摆脱图表。请帮助我,告诉我我做错了什么,以及如何正确生成图形。 谢谢 这是我的代码: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,
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()