更改matplotlib中的刻度标签行间距

时间:2014-07-30 15:43:21

标签: python matplotlib formatting latex

我有一个非常混乱的情节,y-ticklabels需要很长。我已经使用textwrap将它们包装成多行文字。然而,这使得标签在类别之间重叠(或至少过于接近)。

我无法通过间隔刻度,使图表变大,更改字体或缩小文字来解决问题。(我已经推动了这些限制)

正如我所看到的,如果我可以将行间距/高度调整为小于字体请求的范围,我可以解决并使其工作。

因此,为了简单起见,以下刻度标签迫切需要线/线高度之间的较短线距:

from matplotlib import pyplot as plt
plt.barh(0.75, 10, height=0.5)
plt.ylim(0, 2)
plt.yticks([1], ["A very long label\nbroken into 2 line"])
plt.subplots_adjust(left=0.3)
plt.show()

我已经检查了plt.tick_params() rcParams而未找到任何明显的解决方案。我使用 latex 来格式化文本,但尝试在刻度标签字符串中使用\hspace(0.5em}似乎不起作用/只会让事情变得更糟。

关于如何减少行间距的任何建议都将非常受欢迎。

2 个答案:

答案 0 :(得分:0)

您可以在linespacing行中使用plt.yticks关键字。例如:

plt.yticks([1], ["A very long label\nbroken into 2 line"],linespacing=0.5)

您可以使用linespacing的确切值来满足您的需求。希望有所帮助。

以下是代码的原始输出: default line spacing

这里的网格间距为0.5: enter image description here

答案 1 :(得分:0)

尝试使用它:

pylab.rcParams['xtick.major.pad']='???'

与......混乱?得到你喜欢的东西的价值。您也可以尝试(唱OO界面):

fig = plt.figure()
ax = fig.add_subplot(111)
ax.tick_params(axis='both', which='major', labelsize=8)
ax.set_yticks([1], ["A very long label\nbroken into 2 line"], linespacing=0.5)
plt.show()

labelsize命令将改变字体的大小。

将上述内容与rcparams设置结合使用。