我是这个论坛的新手。我在以前的帖子中寻找了很长时间的答案,但没有一个答案完全满足了我的麻烦。我阅读了以下链接中的帖子
Multiple Histograms, each for a label of x-axis, on the same graph matplotlib
Plot two histograms at the same time with matplotlib
还有很多其他的,但什么都没有。
所以,我决定问你我的问题。我有两个这样的概率数组(为了简单起见,我报告两个小列表):a= 0.1,0.2,0.4,0.56,0.67,0.70,0.89,0.90b= 0.15,0.22,0.41,0.47,0.45,0.59,0.66,0.75,0.83,0.99
我必须创建一个直方图,表示由2个条形组成的三组条形(一个用于数组a,另一个用于数组b)。
第一组条形必须表示0.0 (包含)和0.4 (排除)之间的数组的值,第二组必须表示0.4(包含)和0.65 (排除)之间的数组的值,最后一组必须表示其余的值。在y轴上,我希望有相对频率(而不是绝对频率)。
我应该得到类似这样的https://ibb.co/41BdCCP (我在https://plot.ly/python/bar-charts/中找到的),但很明显,在x轴上我会得到值的范围(而不是动物名称),而在y轴上我会得到相对频率(就像我之前写的那样)。
非常感谢,我希望有人能解决我的问题。
发布于 2018-12-01 22:33:04
我不知道你到底想要什么:条形图还是柱状图。但这是一个基于你的问题的直方图:
在这里,我使用一个掩码来定义您想要绘制的组。您可以根据您的问题调整解决方案。出于示例目的,我创建了一些测试数组
a = np.array([0.04, 0.09,0.1, 0.12, 0.2, 0.4, 0.42, 0.44, 0.47, 0.5, 0.53,0.56, 0.67, 0.70, 0.75, 0.76, 0.78, 0.79, 0.89, 0.90] )
b = np.array([0.05, 0.08, 0.15,0.12, 0.22, 0.41, 0.43, 0.44, 0.46, 0.47, 0.45, 0.51, 0.54,0.59, 0.66, 0.75, 0.75, 0.76, 0.77, 0.8, 0.83, 0.99])
lim = [0, 0.4, 0.65, 1]
for i in range(len(lim)-1):
plt.hist(a[(a>=lim[i]) & (a<lim[i+1])], color='r')
plt.hist(b[(b>=lim[i]) & (b<lim[i+1])], color='b')

https://stackoverflow.com/questions/53571679
复制相似问题