繁体   English   中英

如何将标签添加到子图的轴

[英]How to add labels to the axes of subplots

我正在将 8 个子图绘制成一个图形,如下所示:

import matplotlib.pyplot as plt
fig, axs = plt.subplots(8)
label = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
data = [0.6, 0.4, 1.3, 0.8, 0.9, 1.0, 1.6, 0.2]
plt.xlim(0,2)
for i in range(8):
    axs[i].get_yaxis().set_visible(False)
    axs[i].get_xaxis().set_visible(False)
    axs[i].set_xlim([0, 2])
    axs[i].axvline(data[i],linestyle='--')
    axs[i].get_yaxis().set_visible(False)
axs[7].get_xaxis().set_visible(True)
plt.show()

这看起来像:

在此处输入图像描述

为了 label 子图,我想在子图i的左侧写label[i] (见上面的代码)。 你怎么能那样做?

(作为快速修复),您可能只能使用Axes.text ,例如:

axs[i].text(-0.1,0.2,label[i])

根据标签的长度,根据需要调整xy arguments。

在此处输入图像描述

如评论中所述,另一个(更好)选项是保持 y 轴可见,但随后将刻度设置为无:

axs[i].set_yticks(())
axs[i].set_ylabel(label[i], rotation=0, ha='right', va='center')

正如我在评论中提到的,正确的方法是不要关闭 y 轴,并移除刻度线。

诀窍是删除带有axs[i].get_yaxis().set_visible(False)的两行并添加以下两行:

axs[i].tick_params(left=False, labelleft=False)
axs[i].set_ylabel(label[i])

请将以下代码视为完整答案(已编辑以包含 bnaecker 的建议):

import matplotlib.pyplot as plt
plt.close('all')
fig, axs = plt.subplots(8, sharex="col")
label = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
data = [0.6, 0.4, 1.3, 0.8, 0.9, 1.0, 1.6, 0.2]
plt.xlim(0, 2)
for i in range(8):
    axs[i].set_xlim([0, 2])
    axs[i].tick_params(left=False, labelleft=False)
    axs[i].axvline(data[i], linestyle='--')
    axs[i].set_ylabel(label[i])
plt.show()

该图应如下所示:

图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM