Matplotlib使刻度标签字体更小

Ope*_*way 258 python matplotlib

在matplotlib图中,如何使用ax1.set_xticklabels()较小的刻度标签来设置字体大小?

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

Aut*_*iwa 447

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

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)
Run Code Online (Sandbox Code Playgroud)

这只能回答label你问题部分的大小.

  • 使用 `axis = 'x'` 或 `axis = 'y'` 仅修改其中一个轴 (13认同)

sco*_*tle 176

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

plt.xticks(fontsize=14, rotation=90)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在使用类似MATLAB的pyplot接口时会使用它。在面向对象的接口的情况下,应使用轴对象的tick_params()方法或轴对象的set_tick_params()方法(请参见其他答案)。 (3认同)

ber*_*nie 108

请注意,较新版本的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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 旁观:您可以使用`plt.setp`而不是遍​​历tick标签对象.(另外,看看`ax.tick_params`)例如,你可以做`plt.setp(ax.get_xticklabels(),rotation ='vertical',fontsize = 14)`.此外,axis对象有一个`ax.is_last_row()`方法,在你的例子中可以很方便.而不是`if i!= len ...`,你可以做`if if ax.is_last_row()`.(为什么它是一种方法,我不知道...... Matplotlib显然讨厌属性!) (77认同)
  • 在新版本中,我发现你必须使用_labelsize_参数:例如`ax.tick_params(axis ='x',labelsize = 8)` (47认同)

小智 46

或者,您可以这样做:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 
Run Code Online (Sandbox Code Playgroud)


jin*_*imo 24

plt.tick_params(axis='both', which='minor', labelsize=12)
Run Code Online (Sandbox Code Playgroud)


Chr*_*oph 23

在当前版本的Matplotlib中,您可以这样做axis.set_xticklabels(labels, fontsize='small').

  • 这迫使您也指定“标签”。如果我们可以只改变字体大小就更好了。 (4认同)

Kyl*_*son 18

另一种选择

我有两个并排的地块,想分别调整刻度标签.

上面的解决方案很接近,但它们并没有为我提供帮助.我从这个matplotlib 页面找到了我的解决方案.

ax.xaxis.set_tick_params(labelsize=20)
Run Code Online (Sandbox Code Playgroud)

这样做的伎俩直截了当.对于我的用例,右边的情节需要调整.对于我创建新刻度标签后左侧的绘图,我能够在设置标签的同一过程中调整字体.

ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
Run Code Online (Sandbox Code Playgroud)

因此,我用于正确的情节,

ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
Run Code Online (Sandbox Code Playgroud)

一个迷你......我知道......但我希望这有助于某人:)

如果有人知道如何调整数量级标签的字体大小,则奖励积分.

在此输入图像描述


小智 14

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

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
Run Code Online (Sandbox Code Playgroud)

  • 我认为使用具有副作用的列表理解并不是最佳实践。我建议改用标准的 for 循环。 (2认同)

Pen*_*yao 14

对于较小的字体,我使用

ax1.set_xticklabels(xticklabels, fontsize=7)

它的工作原理!


小智 9

以下对我有用:

ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)
Run Code Online (Sandbox Code Playgroud)

上述的优点是你不需要提供arraylabels,并在任何数据的工作axes.