繁体   English   中英

如何在同一图中绘制三个直方图,其中每个直方图必须代表一个值范围?

[英]how I plot three histograms in the same figure where each of them must represent a range of values?

我是这个论坛的新手。 我已经搜索了很久以前的帖子中的答案,但是没有答案可以完全满足我的麻烦。 我阅读了以下链接中的帖子

同一张图上有多个直方图,每个直方图用于x轴标签

使用matplotlib同时绘制两个直方图

还有很多,但是什么也没有。

所以,我决定问你我的问题。 我有两个这样的概率数组(为简单起见,我报告了两个小列表):a = [0.1,0.2,0.4,0.56,0.67,0.70,0.89,0.90] b = [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轴上,我将是相对频率(就像我之前写的一样)。

非常感谢,我希望有人能够解决我的问题。

我不知道您实际上想要什么:条形图或直方图。 但是,这是一个基于您的问题的直方图:

在这里,我使用遮罩定义要绘制的组。 您可以使解决方案适应您的问题。 我出于示例目的创建了一些测试数组

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')

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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