首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在同一图中绘制三个直方图,其中每个直方图必须表示一个值范围?

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

Stack Overflow用户
提问于 2018-12-01 22:17:12
回答 1查看 84关注 0票数 0

我是这个论坛的新手。我在以前的帖子中寻找了很长时间的答案,但没有一个答案完全满足了我的麻烦。我阅读了以下链接中的帖子

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轴上我会得到相对频率(就像我之前写的那样)。

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

EN

回答 1

Stack Overflow用户

发布于 2018-12-01 22:33:04

我不知道你到底想要什么:条形图还是柱状图。但这是一个基于你的问题的直方图:

在这里,我使用一个掩码来定义您想要绘制的组。您可以根据您的问题调整解决方案。出于示例目的,我创建了一些测试数组

代码语言:javascript
复制
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')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53571679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档