matplotlib hist() 中的条之间的间距与数千个箱

Posted

技术标签:

【中文标题】matplotlib hist() 中的条之间的间距与数千个箱【英文标题】:Spacing between bars in matplotlib hist() with thousands of bins 【发布时间】:2014-10-13 05:34:24 【问题描述】:

我正在使用 matplotlib 的 hist() 函数或 bar() 制作直方图,并且我想使用 >10,000 个 bin(一个 bin 表示大型实体的每个坐标处的计数)。创建图形时,有什么方法可以在垂直条之间创建更多空白?目前,直方图的每个条之间没有空白。例如:

# imports
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import random

# Generating dummy data    
coordinate_counts = []
for __ in range(1,100000) :
    coordinate_counts.append(random.randrange(1,10000))

# plotting
fig, ax1 = plt.subplots()
ax1.hist(coordinate_counts,bins=range(1,10000))
fig.savefig('temp.png')

我尝试过使用 rwidth() 并改变它的值,也尝试过使用 figsize() 并简单地扩大绘图的大小,但最终结果总是每个垂直条彼此相邻且没有空格之间。

【问题讨论】:

使用 rwidth 关键字参数对我有用。当然,在我真正解决各个条形图之前,我必须放大很多。如果你只使用 10 个 bin 的 rwidth,你仍然没有在列之间得到任何空间吗? 我认为您可能对显示器期望过高 - 当您的显示器可能只有大约 2000 个像素? 感谢您的洞察力——我在发布问题后正在考虑同样的显示问题! 【参考方案1】:

参数rwidth 指定栏的宽度相对于箱的宽度。例如,如果您的 bin 宽度是 1 和 rwidth=0.5,则条形宽度将为 0.5。在栏的两侧,您将有 0.25 的空间。

注意:这会在连续柱之间留出 0.5 的空间。随着您拥有的垃圾箱数量,您将看不到这些空间。但随着垃圾箱的减少,它们确实会出现。

【讨论】:

正是我想要的

以上是关于matplotlib hist() 中的条之间的间距与数千个箱的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib(3直方图) - plt.hist()参数解释&应用实例

Matplotlib(3直方图) - plt.hist()参数解释&应用实例

matplotlib 笔记:hist(直方图)

hist 和 axvline 不遵循颜色循环/matplotlib 样式

matplotlib可视化篇hist()--直方图

Python-matplotlib 画直方图hist