sharex和sharey不为子图创建共享轴标签

时间:2019-05-13 17:40:26

标签: python matplotlib subplot

我的图表还可以,并且我一直遵循文档来创建共享的x和y标签,因为我想要一个更整洁的子图,但是传递给subplots()的参数无法正常工作。

代码:

fig, axs = plt.subplots(3, 2, sharex=True, sharey=True, figsize=(10,10))

plt.subplot(3, 1, 1)
plt.title('20 highest paid app markets, april 4/4-4/10')
dd_404_410.groupby('market').period_paid_apps.mean().sort_values(ascending=False).nlargest(10).plot(kind='bar', color='darkgrey')
plt.ylabel('apps')
plt.xticks(rotation=45)

plt.subplot(3, 1, 2)
plt.title('20 highest paid app markets, april 4/11-4/17')
dd_411_417.groupby('market').period_paid_apps.mean().sort_values(ascending=False).nlargest(10).plot(kind='bar', color='darkgrey')
plt.ylabel('apps')
plt.xticks(rotation=45)

plt.subplot(3, 1, 3)
plt.title('20 highest paid app markets, april 4/18-4/26')
plt.ylabel('apps')
dd_418_426.groupby('market').period_paid_apps.mean().sort_values(ascending=False).nlargest(10).plot(kind='bar', color='darkgrey')
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()

enter image description here

有人知道需要解决什么问题,以便在x轴上有一个market标签,在y轴上有一个apps标签吗?

1 个答案:

答案 0 :(得分:1)

实际上,您确实是最初使用plt.subplots()创建了具有共享x和y的子图。但是随后您将使用连续的命令plt.subplot()覆盖轴(请注意,结尾处缺少 s )。

这可能是您应该采取的方式(由于我没有您的数据,因此未经测试)

fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, sharey=True, figsize=(10,10))

ax1.set_title('20 highest paid app markets, april 4/4-4/10')
ax1.set_ylabel('apps')
<YOUR DATAFRAME>.plot(kind='bar', color='darkgrey', ax=ax1)

ax2.set_title('20 highest paid app markets, april 4/11-4/17')
ax2.set_ylabel('apps')
<YOUR DATAFRAME>.plot(kind='bar', color='darkgrey', ax=ax2)

ax3.set_title('20 highest paid app markets, april 4/18-4/26')
ax3.set_ylabel('apps')
<YOUR DATAFRAME>.plot(kind='bar', color='darkgrey', ax=ax3)

plt.xticks(rotation=45)

plt.tight_layout()
plt.show()