繁体   English   中英

在matplotlib直方图上绘制相对频率与绝对值的关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM