当增加子图的y刻度标签时,matplotlib轴标签丢失。

问题描述 投票:0回答:1

为什么指定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) 虽然工作得很好。然而,我必须使用theo面向对象的API,因为我在一个更复杂的情节中使用它。否则。plt 指向了错误的轴。

python matplotlib seaborn subplot twinx
1个回答
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)


0
投票

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

ax.tick_params(axis='y', labelsize=16)
© www.soinside.com 2019 - 2024. All rights reserved.