如何用Python绘制多条曲线?解决plt.subplots()子图间X轴残留问题
解决子图间X轴移除问题
直接上可运行的代码,核心思路是通过共享X轴+隐藏中间子图的X轴元素来实现效果:
import matplotlib.pyplot as plt import numpy as np # 生成3条0-1区间的测试曲线数据 x = np.linspace(0, 10, 100) y_curves = [np.random.uniform(0, 1, size=100) for _ in range(3)] # 创建垂直排列的子图,设置sharex=True让所有子图共用X轴 fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(8, 6), sharex=True) # 循环绘制每条曲线 for ax, y in zip(axes, y_curves): ax.plot(x, y) ax.set_ylim(0, 1) # 强制Y轴范围在0-1之间 # 隐藏除最后一个子图外的X轴刻度和标签 for ax in axes[:-1]: ax.tick_params(axis='x', which='both', bottom=False, labelbottom=False) # 要是连X轴线也想去掉,就加下面这句 # ax.spines['bottom'].set_visible(False) plt.tight_layout() plt.show()
关键细节说明
sharex=True:让所有子图共享同一X轴,既避免重复刻度,也让后续隐藏操作更简单。tick_params:bottom=False隐藏刻度线,labelbottom=False隐藏刻度标签,精准控制显示内容。- 如果不需要共享X轴,也可以手动逐个隐藏:
# 针对单个子图单独隐藏X轴元素 axes[0].set_xticks([]) axes[0].set_xticklabels([])
内容的提问来源于stack exchange,提问作者tang
相关产品推荐
相关产品推荐

