条形图上的特定标签比其他标签长得多,因此我想使用"浓缩"该特定标签上的字体:
如何仅为有问题的标签使用替代字体?该机器具有" Ubuntu"安装了字体系列,它有一个非常好的浓缩变体,非常适合这种情况。将精简变量应用于所有标签看起来很糟糕,因此我宁愿将其限制为单个长行。
代码并非完全不同于此:
#!/usr/bin/python3
from matplotlib import pyplot
import matplotlib
import pylab
matplotlib.rcParams['font.family'] = 'ubuntu'
labels = ['Foo', 'Bar', 'Really long label']
values = [5, 3, 4]
ind = pylab.array(range(3))
pyplot.barh(ind, values, 0.5)
pyplot.yticks(range(3), labels)
pyplot.tight_layout()
pyplot.show()
答案 0 :(得分:2)
抓住用于绘制刻度标签的Text
艺术家并直接修改它。我还将代码更改为使用OO界面(适合在函数中使用)并删除pylab
(请不要使用pylab
,使用pyplot
和直接numpy
。
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
matplotlib.rcParams['font.family'] = 'ubuntu'
labels = ['Foo', 'Bar', 'Really long label']
values = [5, 3, 4]
ind = np.array(range(3))
fig, ax = plt.subplots()
ax.barh(ind, values, 0.5, align='center')
ax.set_yticks(range(3))
ax.set_yticklabels(labels)
fig.tight_layout()
txt = ax.yaxis.get_ticklabels()[-1]
txt.set_fontstretch('condensed')
txt.set_fontsize(5) # I also change the font size
plt.draw()
我也改变了字体大小,因为我不确定我的系统上是否安装了正确的字体。我还将align='center'
kwarg添加到barh
,因为我假设您希望标签位于条形图上。