matplotlib 直方图条之间的间距(包含数千个条)

t98cgbkg  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(112)

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

import matplotlib.pyplot as plt
import random

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

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

我试过使用rwidth并改变其值,也试过使用figsize并简单地扩展图的大小,但最终的结果总是每个竖线相邻,中间没有空格。

xmjla07d

xmjla07d1#

参数rwidth指定了条形图相对于bin宽度的宽度。例如,如果bin宽度为1,rwidth=0.5,则条形图宽度为0.5。在条形图的两侧,您将拥有0.25的空间。
思维:在连续的条形图之间有一个0.5的间隔。2在你拥有的箱子数量的情况下,你不会看到这些间隔。3但是在箱子数量较少的情况下,它们会显示出来。

2admgd59

2admgd592#

plt.hist最终使用plt.bar绘制条形图,因此另一种在条形图之间创建间隙的方法是通过width=参数。

fig, ax1 = plt.subplots()
ax1.hist(coordinate_counts, bins=range(1, 10000), width=0.5)

需要注意的一点是,与rwidth不同,width的条形宽度取决于其bin的大小(并且是0和1之间的值),width是确定条形宽度的绝对值(并且可以大于1)。一个示例可以更好地说明。下面的代码

coordinate_counts = list(range(10))*10
plt.hist(coordinate_counts, bins=[0, 3, 8, 10], width=2);

绘制以下图表

而下面的代码绘制

plt.hist(coordinate_counts, bins=[0, 3, 8, 10], rwidth=0.5);

相关问题