matplotlib hist()中的条之间的间距,有数千个bin

yws3nbqq  于 2023-06-06  发布在  其他
关注(0)|答案(2)|浏览(171)

我正在使用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并简单地扩展图的大小,但最终的结果总是每个垂直条彼此相邻,中间没有空格。

35g0bw71

35g0bw711#

参数rwidth指定条形图的宽度相对于容器的宽度。例如,如果您的bin宽度是1,rwidth=0.5,那么条的宽度将是0.5。在酒吧的两侧,您将有一个0.25的空间。
Mind:这给出了连续的条形之间的间隔0.5。以你拥有的箱子的数量,你不会看到这些空间。但随着垃圾箱的减少,它们确实出现了。

carvr3hs

carvr3hs2#

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

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

需要注意的一点是,与rwidth不同的是,条的宽度取决于其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);

相关问题