python两条折线画一个折线图上,其中折线A的Y轴范围[850,950,1050,1150,1250,1350],折线B的Y轴范围[850,950,1050,1150,1200,1250,1350],要求AB的Y轴刻度都要显示在折线图上,怎么画
时间: 2024-10-22 16:08:13 浏览: 23
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
5星 · 资源好评率100%
在Python的matplotlib中,如果你想要确保两根折线的Y轴刻度都完全显示出来,你需要手动设置每个折线图的Y轴范围。考虑到你提供的Y轴范围,我们可以这样做:
```python
import matplotlib.pyplot as plt
# 折线A的Y轴范围
y_A_range = [850, 950, 1050, 1150, 1250, 1350]
# 折线B的Y轴范围,稍微向下调整最后一个值
y_B_range = [850, 950, 1050, 1150, 1200, 1250, 1345]
x_A = list(range(1, len(y_A_range) + 1))
x_B = list(range(1, len(y_B_range) + 1))
plt.figure(figsize=(8, 6)) # 设置绘图尺寸
# 创建两个子图区域,分别对应两条线
ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2, sharex=ax1) # 共享X轴,保持刻度一致
# 分别绘制折线
ax1.plot(x_A, y_A_range, 'r-', label='折线A')
ax2.plot(x_B, y_B_range, 'g-', label='折线B')
# 设置Y轴范围
ax1.set_ylim(min(y_A_range), max(y_A_range))
ax2.set_ylim(min(y_B_range), max(y_B_range))
# 添加网格线
for ax in [ax1, ax2]:
ax.yaxis.grid(True, linestyle='--')
# 图例、标题和坐标轴标签
ax1.set_title('折线A')
ax1.set_xlabel('X轴')
ax1.set_ylabel('Y轴(A)')
ax2.set_title('折线B')
ax2.set_ylabel('Y轴(B)')
# 合并两个子图的Y轴刻度
plt.subplots_adjust(hspace=0.5) # 减少垂直间距
ax1.yaxis.tick_left()
ax2.yaxis.tick_right() # 右侧添加额外的Y轴刻度
ax2.yaxis.set_label_position("right") # 移动右侧Y轴标签位置
# 显示图例
plt.legend()
plt.show()
阅读全文