[英]Plotting Relative Frequency vs. Absolute on a matplotlib histogram
我知道一些类似的问题,但是我已经尝试过对它们进行编码,但在我的环境中不起作用。 因此,我有大量的数据列表(浮点数),我想将其绘制为直方图。 尽管我可以轻松绘制绝对频率,但我想绘制相对频率(纵坐标上的分数/百分比,即y轴)。 我的代码是:
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#1 - n, bins, patches = ax.hist(zdata, bins=ceil(min-max), normed=1, cumulative=0)
#2 - n, bins, patches = ax.hist(zdata, weights=np.zeros_like(data) + 1. / data.size)
ax.set_xlabel('Atomic z coordinate', size=ceil(min-max))
ax.set_ylabel('Relative Frequency')
ax.legend
plt.show()
我注意到python要求将bin计数作为整数,但是我知道我使用70以便于修复。 我更紧急的问题是,当我尝试在此代码段中注释掉的两个命令时,两个命令均无效。 情况1不会引发错误,但是当我完成命令并调用show()时,该图没有出现。 情况2引发NameError并抱怨它不知道什么是“数据”。 我在其他问题中遵循模板,但不确定自己是什么“数据”。 我的值数组(列表)是zdata。 另外,垃圾箱和补丁之间是否有区别?
我正在使用python 2.7.3,而IDE是Spyder 2.1.11。 非常感谢,如果这与过去的问题非常相似,我深表歉意。
命令np.zeros_like(data)
意味着您将使用长度和数据类型与数组data
相同的零来填充数组。 如果要使用此命令,则需要定义一个名为data
的数组( NameError
表示您正在尝试使用尚未定义的变量名。),或者可能由于zdata
存在而想用zdata
替换data
我猜您希望权重与输入数据的长度相同。
注意
编写此代码的更好方法:
np.zeros_like(data) + 1. / data.size
会是这样
np.ones_like(data) / data.size
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.