python一张图中,有两个y坐标共用一个x轴,但两者最低端刻度线不对齐,现在我想要使两个y坐标轴都从0开始,如何调整
时间: 2024-11-09 12:19:38 浏览: 23
在Python中,如果你使用matplotlib创建这样的双Y轴图表,确保两个y轴对齐并且起始点都是0,你需要使用`twinx()`或`twin Axes()`功能来添加第二个y轴。同时,对于轴的定位和标签,可以分别处理每个轴。这里是一个示例:
```python
import matplotlib.pyplot as plt
import numpy as np
# 数据准备
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax1 = plt.subplots()
# 第一个y轴
ax1.plot(x, y1, color='tab:red')
ax1.set_ylabel('First Y Axis', color='tab:red')
ax1.tick_params(axis='y', labelcolor='tab:red')
# 添加第二个y轴
ax2 = ax1.twinx() # 或者使用 fig.add_subplot(111, sharex=ax1) 和 ax2 = ax1.twin()
ax2.plot(x, y2, color='tab:blue')
ax2.set_ylabel('Second Y Axis', color='tab:blue')
ax2.tick_params(axis='y', labelcolor='tab:blue')
# 将第一个轴的底部(也就是共享的x轴)设为0
ax1.set_ylim(bottom=0)
ax2.set_ylim(bottom=0)
# 调整两个y轴的刻度范围使其从0开始
for axis in [ax1, ax2]:
axis.get_yaxis().set_ticks_position('left')
axis.yaxis.set_major_locator(ticker.MaxNLocator(nbins=4, prune='both')) # 控制分段数
plt.show()
```
在这个例子中,`twinx()`创建了共享x轴的新轴,然后我们分别设置了每个轴的y轴范围和刻度。`set_ylim(bottom=0)`确保了每个轴的最低刻度线在0。
阅读全文