簡體   English   中英

matplotlib 軸 label 在增加子圖的 y 刻度標簽時丟失

[英]matplotlib axis label lost when increasing y tick labels for subplot

為什么指定時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,因為我在更復雜的 plot 中使用它。 否則, plt指的是錯誤的軸。

嘗試將其替換為:

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)

您可以只使用tick_params function 並指定哪個軸。 對於兩個軸,使用axis='both'

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM