当前位置: 首页 > 面试题库 >

如何在matplotlib中为不等间距的bin绘制具有相同bin宽度的直方图

翟鸿振
2023-03-14
问题内容

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

我有不等间距的垃圾箱,但是我希望每个垃圾箱都具有相同的宽度。所以我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)

结果是这样的:

柱状图等距分布的直方图

如何摆脱两个系列的两个对应箱之间的边距?即如何将每个系列的条形图分组?

谢谢


问题答案:

一种解决方案是通过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))

历史



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

  • 我正在尝试在 matplotlib 中绘制具有多个数据序列的直方图。 我有不相等间隔的箱子,但是我想要每个箱子得到相同的宽度。所以我这样使用属性< code>width: 结果是: 我怎样才能去掉两个系列的两个对应箱子之间的边距?一、 e.如何为每个箱子分组不同系列的钢筋? 谢谢

  • 我正在制作一个有3个子绘图的图,尽管它们的宽度都相等,但一些直方图箱子的大小似乎不同。我的目标是创建一个具有相等宽度条的直方图。 我正在绘制来自三个不同数据框< code>df1、df2、df3的数据,每个数据框都有自己的轴。前两个数据帧(< code>df1,df2)有12个值,而第三个(< code>df3)有21个值。一个简单的工作示例: 在上图中,第三个子图 具有一个柱形图条,其条柱宽度显

  • 问题内容: 我正在使用matplotlib制作直方图。 有什么方法可以手动设置垃圾箱的大小,而不是垃圾箱的数量吗? 问题答案: 实际上,这很简单:您可以提供一个带有bin边界的列表,而不是bin的数量。它们也可能分布不均: 如果只希望它们均匀分布,则可以使用range: 添加到原始答案 上一行仅适用于整数填充。正如macrocosme所指出的,对于浮点数,您可以使用:

  • 我有一张桌子,比如: 生成虚拟数据: 我想用垫线 (v1.4) 在 Python 3 中完成一个任务: 绘制的直方图 按 两个小时,未能获得所需的直方图 我阅读了matplotlib的示例和用户指南。令人惊讶的是,我没有找到关于如何从颜色图中指定颜色的教程 我在谷歌上搜索过,但没有找到一个简洁的例子 我想一个人可以用,不导入一系列模块,例如,

  • 我试图从下面的论文(http://dx.doi.org/10.1016/j.envsci.2011.08.004)中复制图表图1的概念: 它是一个直方图,其箱子宽度取决于的值,其高度取决于变量。图表中的精确值并不重要,而是要了解如何复制它。 以下代码为每个创建了一个具有两个特征的数据帧(and measure的宽度是减量,

  • 我希望matplotlib直方图以等间距的xax显示数据,尽管它的bin的值不是等间距的。我该怎么做?目前,年龄组“0-6”、“7-12”、“13-16”、“17-20”的条形图看起来比我的其他数据更薄,“17-20”的条形图与21-30的条形图重叠。xtick标签也重叠。我如何解决这些问题?

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