Matplotlib中如何删除特定子图的y轴刻度标签?(Python)

3

我有一个包含三个子图的图片,每个子图的y轴都采用相同的刻度标签(它们是类别)。以下是代码:

on_bus = business_changes[business_changes['Business characteristics']=='Ontario']
qu_bus = business_changes[business_changes['Business characteristics']=='Quebec']
fig, ax = plt.subplots(nrows=1, ncols=3, sharex=True, sharey=True, figsize=(20,10))
ax1 = plt.subplot(1,3,1) 
sns.barplot(x = business_changes.iloc[0,1:], y= business_changes.columns[1:])
plt.title("Changes made by businesses - Canada")
plt.subplot(1,3,2)
sns.barplot(x = on_bus.iloc[0,1:], y = on_bus.columns[1:])
plt.title("Changes by businesses - Ontario")
plt.subplot(1,3,3)
sns.barplot(x = qu_bus.iloc[0,1:], y = qu_bus.columns[1:])
plt.title("Changes by businesses - Quebec")
plt.show()

图表如下:

图表

我想移除最后两个图表的y轴标签,因为它们与第一个图表本质上具有相同的标签,这样我就不必为空间而争斗,图表看起来会更整洁。
1个回答

4
我的做法是使用axes.get_yaxis().set_visible(False)。因此,以下代码:
f, axes = plt.subplots(1, 3)
ax1 = sns.barplot(x = business_changes.iloc[0,1:], y= business_changes.columns[1:], ax = [0])
plt.title("Changes made by businesses - Canada")
ax2 = sns.barplot(x = on_bus.iloc[0,1:], y = on_bus.columns[1:], ax = axes[1])
ax2.axes.get_yaxis().set_visible(False)
plt.title("Changes by businesses - Ontario")
ax3 = sns.barplot(x = qu_bus.iloc[0,1:], y = qu_bus.columns[1:], ax = axes[2])
plt.title("Changes by businesses - Quebec")
plt.show()

否则,尝试将其适应于脚本,并绝对使用axes.get_yaxis().set_visible(False),并针对最后两个图进行操作。在我的情况下,我将它们定义为 ax2ax3 并按名称进行“定位”操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接