仅为一个值更改轴标签字体
Change axis label font for one value only
条形图上的特定标签比其他标签长得多,因此我想在该特定标签上使用 "condensed" 字体:
我怎样才能只为有问题的标签使用替代字体? 机器安装了 "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()
抓取用于绘制刻度标签的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
中,因为我假设您希望标签在条形图上居中。
条形图上的特定标签比其他标签长得多,因此我想在该特定标签上使用 "condensed" 字体:
我怎样才能只为有问题的标签使用替代字体? 机器安装了 "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()
抓取用于绘制刻度标签的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
中,因为我假设您希望标签在条形图上居中。