关于python:Matplotlib使刻度标签字体更小

Matplotlib make tick labels font size smaller

在matplotlib图中,如何使用ax1.set_xticklabels()使勾号标签的字体更小?

此外,如何将其从水平旋转到垂直?


实际上有一个更简单的方法。我刚刚发现:

1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt
# We prepare the plot  
fig = plt.figure(1)
# We define a fake subplot that is in fact only the plot.  
ax = fig.add_subplot(111)

# 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的大小。


要同时指定字体大小和旋转,请尝试以下操作:

1
plt.xticks(fontsize=14, rotation=90)


请注意,较新版本的MPL有此任务的快捷方式。此问题的另一个答案中显示了一个示例:https://stackoverflow.com/a/11386056/42346

下面的代码用于说明目的,不一定要进行优化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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()

enter image description here


或者,您也可以这样做:

1
2
3
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size

在Matplotlib的当前版本中,可以执行axis.set_xticklabels(labels, fontsize='small')


另一种选择

我有两个并排的绘图区,希望单独调整刻度线标签。

以上的解决方案都很接近,但它们并没有为我解决。我从这个Matplotlib页面找到了我的解决方案。

1
ax.xaxis.set_tick_params(labelsize=20)

这是个骗局,而且直截了当。对于我的用例,右边的图需要调整。对于左侧的绘图,自从我创建新的刻度线标签以来,我可以在设置标签的相同过程中调整字体。

工业工程

1
2
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)

所以我用了正确的情节,

1
2
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)

一只小猎犬巧妙地…我知道。。。但我希望这能帮助别人:)

如果有人知道如何调整字体大小的数量级标签的奖励点。

enter image description here


对于较小的字体,我使用

ax1.set_xticklabels(xticklabels, fontsize=7)

它工作!


您还可以使用如下行更改fontsize等标签显示参数:

1
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]

1
plt.tick_params(axis='both', which='minor', labelsize=12)


以下内容对我很有用:

1
2
ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)

上述优点是,您不需要提供labelsarray并使用axes上的任何数据。