Answers:
请注意,较新版本的MPL具有此任务的快捷方式。该问题的其他答案中显示了一个示例:https : //stackoverflow.com/a/11386056/42346
下面的代码仅用于说明目的,不一定进行优化。
import matplotlib.pyplot as plt
import numpy as np
def xticklabels_example():
fig = plt.figure()
x = np.arange(20)
y1 = np.cos(x)
y2 = (x**2)
y3 = (x**3)
yn = (y1,y2,y3)
COLORS = ('b','g','k')
for i,y in enumerate(yn):
ax = fig.add_subplot(len(yn),1,i+1)
ax.plot(x, y, ls='solid', color=COLORS[i])
if i != len(yn) - 1:
# all but last
ax.set_xticklabels( () )
else:
for tick in ax.xaxis.get_major_ticks():
tick.label.set_fontsize(14)
# specify integer or one of preset strings, e.g.
#tick.label.set_fontsize('x-small')
tick.label.set_rotation('vertical')
fig.suptitle('Matplotlib xticklabels Example')
plt.show()
if __name__ == '__main__':
xticklabels_example()
plt.setp
。(也可以看看ax.tick_params
)例如,您可以这样做plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
。此外,轴对象具有一种ax.is_last_row()
方法,在您的示例中,这种方法很方便。相反if i != len...
,您可以这样做if not ax.is_last_row()
。(为什么是一种方法,我不知道... Matplotlib显然讨厌属性!)
is_last_row()
,谢谢!我过去使用plt.setp
过,不一定要确定它代表了一种更规范的自定义刻度标签方法。谢谢,您已经消除了疑问。更广泛地说:您的答案,尤其是matplotlib
标签中的答案,经常让我感到敬畏。继续努力。
plt.setp
是一种“ matlab-ism”,而显式循环可能更Python化。我自己是一名matlab转换者,setp
感觉很自然,但对每个人来说都是很自然的。imo是其中之一,可读性很强
ax.tick_params(axis='x', labelsize=8)
get_ticklabels
不是get_major_ticks
实际上有一个更简单的方法。我刚刚发现:
import matplotlib.pyplot as plt
# We prepare the plot
fig, ax = plt.subplots()
# We change the fontsize of minor ticks label
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)
但是,这只能回答label
部分问题的大小。
axis = 'x'
或 axis = 'y'
修改其中一个轴
要同时指定字体大小和旋转度,请尝试以下操作:
plt.xticks(fontsize=14, rotation=90)
plt.tick_params(axis='both', which='minor', labelsize=12)
ax.xaxis.set_tick_params(labelsize=20)
另一种选择
我有两个并排的图,想分别调整刻度线标签。
上面的解决方案很接近,但是对我来说却没有用。我从此matplotlib 页面找到了解决方案。
ax.xaxis.set_tick_params(labelsize=20)
这可以解决问题,并且很直接。在我的用例中,需要调整的是右图。自从创建新的刻度标签以来,对于左侧的图,我可以在设置标签的相同过程中调整字体。
即
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
因此我使用了正确的情节,
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
轻微的微妙...我知道...但是我希望这可以帮助某人:)
如果有人知道如何调整数量级标签的字体大小,则加分。
您还可以使用如下一行来更改标签显示参数(如fontsize):
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]