ax1.set_xticklabels()
缩小刻度标签的字体大小?#1 楼
请注意,较新版本的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)。另外,axes对象具有ax.is_last_row()方法,在您的示例中,这种方法很方便。如果不是ax.is_last_row(),则可以执行i!= len...。 (为什么是一种方法,我不知道... Matplotlib显然讨厌属性!)
–乔·肯顿(Joe Kington)
2011年6月18日在2:11
@Joe:这是我第一次听说is_last_row(),谢谢!我过去使用过plt.setp,并不一定要确定它代表了自定义刻度标签的更规范的方式。谢谢,您已经消除了疑问。更广泛地说:您的答案(尤其是在matplotlib标记中)经常使我感到敬畏。继续努力。
–mechanical_meat
2011年6月18日,下午2:51
谢谢!!我感谢您的客气话,尤其是您的来信!在这种情况下,规范是相对的。 plt.setp是一种“ matlab主义”,而显式循环可能更pythonic。作为一个matlab转换者,我自己,setp感觉很自然,但对每个人来说都是如此。任一种都是可读性强的。
–乔·肯顿(Joe Kington)
2011年6月18日,下午3:36
在新版本中,我发现您必须使用labelsize参数: ax.tick_params(axis ='x',标签大小= 8)
– Vladtn
2012年2月16日20:49
应该是get_ticklabels而不是get_major_ticks
– Jez
15年6月15日在10:25
#2 楼
实际上有一种更简单的方法。我刚刚发现: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'仅修改其中一个轴
–耶稣的喜爱
20-04-28在15:08
#3 楼
要同时指定字体大小和旋转大小,请尝试以下操作:plt.xticks(fontsize=14, rotation=90)
评论
请注意,在使用类似MATLAB的pyplot接口时会使用它。如果是面向对象的接口,则应使用轴对象的tick_params()方法或轴对象的set_tick_params()方法(请参见其他答案)。
–wombatonfire
18年7月20日在17:45
#4 楼
另外,您也可以执行以下操作:import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
#5 楼
plt.tick_params(axis='both', which='minor', labelsize=12)
评论
如果您要更改字体大小而不设置新标签,这是唯一可行的答案。
–David Stansby
17年9月20日在9:20
@DavidStansby我不相信这是真的。我遇到了这个确切的问题(上面已提到),并且能够使用不同于该解决方案的替代方法。使用ax.xaxis.set_tick_params(labelsize = 20)
–凯尔·斯旺森(Kyle Swanson)
18-10-15在22:47
最简单的答案,不需要引用斧头对象
–jeremy_rutman
19年7月6日在8:54
#6 楼
另一个替代方法我有两个并排图,并且想分别调整刻度线标签。
以上解决方案很接近,但对我来说却不可行。我从此matplotlib页面中找到了解决方案。对于我的用例,需要调整的是右边的图。对于自从创建新的刻度标签以来的左侧图,我可以在设置标签的相同过程中调整字体。
ie
ax.xaxis.set_tick_params(labelsize=20)
因此我使用了正确的绘图,
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
细微之处...我知道...但我希望这对某人有帮助:) br />
如果有人知道如何调整数量级标签的字体大小,则奖励点。
#7 楼
在当前版本的Matplotlib中,您可以执行axis.set_xticklabels(labels, fontsize='small')
。评论
这也迫使您指定标签。最好只更改字体大小。
– Guimoute
19年11月20日在13:47
#8 楼
您还可以使用如下一行更改标签显示参数,例如fontsize:zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
评论
我认为使用具有副作用的列表理解不是最佳实践。我建议改用标准的for循环。
– jjmontes
19年7月31日在17:59
#9 楼
对于较小的字体,我使用ax1.set_xticklabels(xticklabels, fontsize=7)
,它可以工作!
评论
您如何定义xticklabels?
–mLstudent33
20-2-20在19:21
评论
感谢您提出这个问题,我正在尝试解决这个问题。我在这里的观点不强,但看起来选民认为最好的答案不是公认的答案。你觉得呢?我是否正确地阅读到至少有5种不同的方法来更改matplotlib中的字体大小? :D