python 如何使子图Y标记只出现一次?

kmynzznz  于 2023-03-21  发布在  Python
关注(0)|答案(2)|浏览(175)

我有一个简单的问题需要解决,下面是例子

import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=1, ncols=3,  figsize=(6, 6))
for axs in ax.flat:
    axs.set(ylabel='AUC')

这是输出

我希望Y-标签(AUC)在第一个子图中只出现一次(共享),其他值应保留。这是所需的输出

如何解决这个问题?请我需要你的帮助

0aydgbwb

0aydgbwb1#

因为你是在循环中设置标签的,所以你要相应地标记子图中的所有轴。你只需要标记子图行中的第一个单元格。
所以这个:

for axs in ax.flat:
    axs.set(ylabel='AUC')

变更为:

ax[0].set_ylabel("AUC")

我还建议您在多个子图之间共享轴,因为所有的ytick都使您的图比理想的可读性稍差。您可以如下所示更改它:

fig, ax = plt.subplots(nrows=1, ncols=3,  figsize=(6, 6), sharex=True, sharey=True,)

生成的图像将是:

ajsxfq5m

ajsxfq5m2#

使用ax.label_outer()提供了一个更通用的解决方案,特别是在使用多行网格时。请参阅:https://matplotlib.org/stable/gallery/subplots_axes_and_figures/subplots_demo.html#stacking-subplots-in-two-directions

import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=1, ncols=3,  figsize=(6, 6))
for axs in ax.flat:
    axs.set(ylabel='AUC')
    axs.label_outer()

相关问题