当前位置: 首页 > 知识库问答 >
问题:

如何为 matplotlib 中间隔不等的条柱绘制具有相同条柱宽度的直方图

况谦
2023-03-14

我正在尝试在 matplotlib 中绘制具有多个数据序列的直方图。

我有不相等间隔的箱子,但是我想要每个箱子得到相同的宽度。所以我这样使用属性< code>width:

aa = [0,1,1,2,3,3,4,4,4,4,5,6,7,9]
plt.hist([aa, aa], bins=[0,3,9], width=0.2)

结果是:

我怎样才能去掉两个系列的两个对应箱子之间的边距?一、 e.如何为每个箱子分组不同系列的钢筋?

谢谢

共有1个答案

宋朝
2023-03-14

一种解决方案是通过numpy计算直方图,并手动单独绘制条形图:

aa1 = [0,1,1,2,3,3,4,4,5,9]
aa2 = [0,1,3,3,4,4,4,4,5,6,7,9]
bins = [0,3,9]
height = [np.histogram( xs, bins=bins)[0] for xs in [aa1, aa2]]
left, n = np.arange(len(bins)-1), len(height)

ax = plt.subplot(111)
color_cycle = ax._get_lines.color_cycle

for j, h in enumerate(height):
    ax.bar(left + j / n, h, width=1.0/n, color=next(color_cycle))

ax.set_xticks(np.arange(0, len(bins)))
ax.set_xticklabels(map(str, bins))
 类似资料:
  • 我正在尝试创建一个具有自定义垃圾箱范围的直方图。但是,正如您在下面的直方图中看到的,垃圾箱宽度不是恒定的大小。 理想情况下,我想要这样的东西。箱之间的间距并不重要,我只是希望每个箱子/列的宽度相同: 我用来生成第一个直方图的代码是:

  • 为了生成此图,我执行了以下操作: 但是,正如您所注意到的,我想绘制每个数据点的相对频率的直方图,其中只有3个具有不同大小的条柱: bin1 = 0.03 - bin2 = 0.3 - bin3=2- 直方图看起来很难看,因为最后一个面元的大小相对于其他面元来说非常大。如何修复直方图?我想改变箱子的宽度,但不想改变每个箱子的范围。

  • 我花了一些时间在互联网上寻找这个问题的答案,我也试着在SO的所有地方寻找答案,但我想我没有正确的术语……请原谅,如果这是某个已知问题的重复,我很乐意删除我的帖子,改为引用该帖子! 无论如何,我试图在Matplotlib中的同一图形上绘制两个直方图。我的两个数据源是包含 500 个元素的列表。要说明我面临的问题,请参阅下图: 如您所见,在默认参数下,直方图具有不均匀的条块大小,即使条块的数量是相同的

  • 问题内容: 我想使用matplotlib从向量绘制归一化的直方图。我尝试了以下方法: 以及: 但是没有一个选项会从[0,1]产生y轴,以使得直方图的条形高度之和为1。我想生成这样的直方图-我该怎么做? 问题答案: 如果您提出了更完整的工作示例(或在这种情况下为非工作示例),则将更有帮助。 我尝试了以下方法: 实际上,这将产生一个y轴从到的条形图直方图。 此外,按照该文件(即从),我觉得总和也没关系

  • 如图: 让红框内柱子之间没有间隔,这个要怎么实现呢?

  • 我有一个需要分解的spark数据帧,格式如下。我检查其他解决方案,比如这个。但是,在我的例子中,之前的之后的 或“after”。 我可以在两个单独的爆炸中执行此操作,其中我在每个爆炸中创建列,然后创建。 但是,我想知道是否有更优雅的方式来做到这一点。谢谢