在matplotlib图中,如何使用ax1.set_xticklabels()使标记标签的字体大小更小?
此外,如何将它从水平旋转到垂直?
在matplotlib图中,如何使用ax1.set_xticklabels()使标记标签的字体大小更小?
此外,如何将它从水平旋转到垂直?
请注意,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()
其实有一个更简单的方法。我刚刚发现:
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)
不过,这只回答了你的问题的标签大小部分。
你也可以改变标签显示参数,像fontsize这样一行:
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
或者,你可以这样做:
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
另一种替代方法
我有两个并排的地块,想分别调整tick标签。
上面的解决方案很接近,但它们并不适合我。我从这个matplotlib页面找到了我的解决方案。
ax.xaxis.set_tick_params(labelsize=20)
这招很管用,而且直击要害。对于我的用例,需要调整的是右边的图。对于左边的图,因为我正在创建新的标记标签,所以我能够在设置标签的相同过程中调整字体。
ie
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)
一个小小的微妙之处……我知道…但我希望这能帮助到一些人:)
如果有人知道如何调整字体大小的数量级标签,加分。
下面的方法对我很有效:
ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)
上面的优点是您不需要提供标签数组,并且可以处理轴上的任何数据。