在matplotlib中更改刻度标签行间距
我有一个比较杂乱的图表,y轴的标签需要很长。我用 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
试试这个:
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
设置结合起来使用。
3
你可以在你的 plt.yticks
代码中使用 linespacing
这个关键词。比如说:
plt.yticks([1], ["A very long label\nbroken into 2 line"],linespacing=0.5)
你可以根据自己的需要调整 linespacing
的具体数值。希望这对你有帮助。
这是你代码的原始输出:
这是行间距设置为 0.5 后的效果: