【问题标题】:Setting bar spacing in a matplotlib bar plot在 matplotlib 条形图中设置条形间距
【发布时间】:2011-06-03 17:20:02
【问题描述】:

我有一个 matplotlib.bar 图,但我不知道如何将条形隔得更远,以便标签可读。

这是我的代码

import matplotlib  
matplotlib.use('Agg')  
import matplotlib.pyplot as plt  
def makePlot(self, data, labels, title, fileName):  
    plt.bar(range(1,len(data)+1), data, align="center")  
    plt.title(title)  
    plt.xticks(range(1, len(labels)+1), labels)  
    plt.savefig(fileName)  
    plt.clf()

【问题讨论】:

  • 为什么不交换 x 轴和 y 轴(以方便读取 x 标签)?此外,如果 X 没有特定的顺序,您可以通过增加或减少 Y 的值来重新排序。
  • x 轴上的类别代表一段时间内的某种趋势,因此将它们留在 x 轴上更有意义。我主要对绘图右侧的大量空间感到困扰 - 为什么我不能增加条形的间距来填充该空间,或者为什么这不会自动发生?
  • 可以使用plt.xlim()函数手动设置x轴的范围。
  • 修复了它。谢谢你。您介意将其编辑到您的答案中,以便更清楚地回答我的问题吗?

标签: python matplotlib


【解决方案1】:

您可以通过调用plt.figure(figsize=(x,y)) 更改图形的大小,其中xy 是以英寸为单位的宽度和高度。该行必须在您致电plt.bar 之前。

或者,您可以缩小标签字体。您可以通过将您的呼叫更改为 xticksplt.xticks(range(1, len(labels)+1), labels, size='small') 来做到这一点。

另外一个尝试是使用 plt.xlim() 函数手动设置 x 轴的限制。

【讨论】:

  • 这有帮助,但是可以手动设置条的间距吗?