【发布时间】:2017-12-05 09:53:40
【问题描述】:
我想使用以下代码在 X 轴上绘制一个带有很多刻度的图形:
import pylab
N = 100
data = pylab.np.linspace(0, N, N)
pylab.plot(data)
pylab.xticks(range(N)) # add loads of ticks
pylab.grid()
pylab.tight_layout()
pylab.show()
pylab.close()
生成的图如下所示:
如您所见,X 轴一团糟,因为刻度标签之间的间距太小甚至重叠。
我想在每个刻度标签之间自动创建恒定的空间,无论有多少刻度。所以,我想增加单个刻度之间的空间,从而可能增加绘图的“长度”。
请注意,刻度标签可能是可变长度的字符串。
到目前为止,我发现的都是关于spacing between the axis and labels(这不是我想要的)、tick frequency(我已经可以做到)和tick parameters(似乎没有任何间距选项)。
我可以使用matplotlib.pyplot.figure(figsize=(a, b)) 手动更改图形的大小,但这需要知道刻度之间的默认间距(据我所知没有)和刻度的最大宽度(英寸)标签,我不知道如何衡量,所以在我看来,这不是一个选择。
我可以做些什么来增加刻度之间的间距?我可以得到一个相当长的图像。
【问题讨论】:
-
这就是 matplotlib 的工作方式。您创建一个给定大小的图形并将绘图放入其中。如果有更多标签,它们将重叠。您当然可以在创建后更改图形大小;找出最长标签占用的空间,将其乘以标签数量,添加边距并将其设置为新的图形大小。这是一个相当复杂的过程,所以我不确定这是否真的是您想要的。
-
@ImportanceOfBeingErnest,我在最后一段中谈到了这一点,这确实似乎很难做到,因为我不知道如何计算最长标签占用的空间......我希望有一些不错的技巧可以做到这一点。
-
是的,这就是我的观点。很明显,您排除了唯一可能的解决方案。你想不想走那条路?我想您可以沿着这条线寻求帮助,而不是排除该选项。
标签: python matplotlib plot