【问题标题】:matplotlib axis label lost when increasing y tick labels for subplot增加子图的 y 刻度标签时 matplotlib 轴标签丢失
【发布时间】:2020-08-29 19:06:00
【问题描述】:

为什么指定时y轴标签会丢失:ax.set_yticklabels(ax.get_yticklabels(), fontsize=16)

%pylab inline
import pandas as pd
import seaborn as sns; sns.set()

df = pd.DataFrame({'dt':['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04'], 'category':['a', 'b', 'a', 'b'], 'foo':[10, 15, 8, 13], 'bar':[12, 8, 5, 18]})
df['dt'] = pd.to_datetime(df['dt'])

plt.figure()
ax0 = plt.subplot(211)
ax = sns.lineplot(x='dt', y='foo', data=df, hue='category', ax=ax0)
ax.set_yticklabels(ax.get_yticklabels(), fontsize=16)
plt.show()

编辑

plt.yticks(fontsize=16) 工作得很好。但是,我必须使用面向对象的 API,因为我在更复杂的情节中使用它。否则,plt 指的是错误的轴。

【问题讨论】:

    标签: python matplotlib seaborn subplot twinx


    【解决方案1】:

    尝试将其替换为:

    ax.set_yticklabels(ax.get_yticks(), fontsize=16)
    

    一个简短的解释为什么ax.set_yticklabels(ax.get_yticklabels(), fontsize=16)给你空的y标签:

    如果你print (ax.get_yticklabels()[:]),它会给你:

    [Text(1, 0, ''), Text(1, 0, ''), Text(1, 0, ''), Text(1, 0, ''), Text(1, 0, '')]
    

    请注意,每个子列表中的最后一项都是空字符串,它们将被视为您的 ylabel。 因此它等价于ax.set_yticklabels(labels=[], fontsize=16)

    【讨论】:

      【解决方案2】:

      您可以只使用tick_params 函数并指定哪个轴。对于两个轴,使用axis='both'

      ax.tick_params(axis='y', labelsize=16)
      

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 2017-09-23
        • 2020-12-16
        • 2015-12-18
        • 1970-01-01
        • 2012-12-19
        • 2019-08-25
        • 1970-01-01
        相关资源
        最近更新 更多