【问题标题】:Python: How to increase/reduce the fontsize of x and y tick labels?Python:如何增加/减少 x 和 y 刻度标签的字体大小?
【发布时间】:2016-03-04 06:35:38
【问题描述】:

在使用matplotlib 时,我似乎在弄清楚如何增加或减少 x 和 y 刻度标签的 fontsize 时遇到问题。

我知道有set_xticklabels(labels, fontdict=None, minor=False, **kwargs) 函数,但我不明白如何控制其中的fontsize

我期待一些明确的东西,比如

title_string=('My Title')
plt.suptitle(title_string, y=1.0, fontsize=17)

但到目前为止我还没有找到类似的东西。我错过了什么?

【问题讨论】:

    标签: python text matplotlib axis-labels keyword-argument


    【解决方案1】:

    您可以在对set_xticklabelsset_yticklabels 的调用中直接设置字体大小(如前面的答案中所述)。这一次只会影响一个Axes

    ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)
    ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)
    

    请注意,仅当您首先固定刻度的位置时才应使用此方法(例如,使用ax.set_xticks)。如果您没有从默认位置更改刻度位置,您可以使用 ax.tick_params

    更改刻度标签的字体大小而不更改文本
    ax.tick_params(axis='x', labelsize=8)
    ax.tick_params(axis='y', labelsize=8)
    

    ax.tick_params(axis='both', labelsize=8)
    

    您还可以使用rcParams 全局设置ticklabel 字体大小(即脚本中的所有图形/子图):

    import matplotlib.pyplot as plt
    
    plt.rc('xtick',labelsize=8)
    plt.rc('ytick',labelsize=8)
    

    或者,等效地:

    plt.rcParams['xtick.labelsize']=8
    plt.rcParams['ytick.labelsize']=8
    

    最后,如果这是您希望为所有 matplotlib 绘图设置的设置,您还可以在 matplotlibrc 文件中设置这两个 rcParams

    xtick.labelsize      : 8 # fontsize of the x tick labels
    ytick.labelsize      : 8 # fontsize of the y tick labels
    

    【讨论】:

      【解决方案2】:

      不应使用set_yticklabels 来更改字体大小,因为这也会设置标签(即,它将用FixedFormatter 替换任何自动格式化程序),这通常是不受欢迎的。最简单的就是设置各自的tick_params

      ax.tick_params(axis="x", labelsize=8)
      ax.tick_params(axis="y", labelsize=20)
      

      ax.tick_params(labelsize=8)
      

      如果两个轴的大小相同。

      当然也可以使用@tmdavison's answer 中的rcParams。

      【讨论】:

      • 这对 jupyter/pandas 非常有用。例如,我希望更改如下代码的字体大小:fig, ax = plt.subplots(figsize=(12,8)) df['metric'].plot(kind='bar',ax=ax)
      • 我不为我工作。在这里查看:import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.DataFrame({ 'sales': [3, 2, 3, 9, 10, 6], 'signups': [5, 5, 6, 12, 14, 13], 'visits': [20, 42, 28, 62, 81, 50], }, index=pd.date_range(start='2018/01/01', end='2018/07/01', freq='M')) ax = df.plot.area() plt.tick_params(axis="x", labelsize=18) plt.tick_params(axis="y", labelsize=18) plt.show()
      • @CarloBianchi 它确实有效。如果要更改次要刻度标签的大小,请添加which="both"
      【解决方案3】:

      这比我想象的要简单。

      设置x轴刻度的字体大小:

      x_ticks=['x tick 1','x tick 2','x tick 3']
      ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)
      

      对 y 轴刻度进行此操作:

      y_ticks=['y tick 1','y tick 2','y tick 3']
      ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)
      

      rotationfontsize 参数可以轻松控制我所追求的。

      参考:http://matplotlib.org/api/axes_api.html

      【讨论】:

        【解决方案4】:

        使用关键字size 而不是fontsize

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-11
        • 2021-06-24
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多