python用for循环画多子图,每个字图都有y轴标题
时间: 2023-07-09 14:14:20 浏览: 207
可以使用Matplotlib库来实现这个需求。以下是一个示例代码:
```python
import matplotlib.pyplot as plt
# 定义数据
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 5]
y2 = [3, 5, 1, 2, 4]
y3 = [2, 4, 5, 1, 3]
# 循环画图
for i, y in enumerate([y1, y2, y3]):
plt.subplot(3, 1, i+1)
plt.plot(x, y)
plt.ylabel('y' + str(i+1))
plt.show()
```
解释:
- `plt.subplot(3, 1, i+1)` 表示将画布分成 3 行 1 列,当前画图的位置是第 i+1 个位置。
- `plt.ylabel('y' + str(i+1))` 表示为当前子图添加纵轴标题,标题为 "y" 加上当前循环次数。
执行以上代码可以得到三个子图,每个子图都有一个纵轴标题。你可以根据自己的需求修改代码中的数据和画图参数。
相关问题
python用for循环和axs画多子图,每个字图都有y轴标题
可以使用以下代码实现:
```
import matplotlib.pyplot as plt
# 创建一个包含多个子图的画布
fig, axs = plt.subplots(nrows=3, ncols=2, figsize=(8, 10))
# 标题列表
titles = ['图1', '图2', '图3', '图4', '图5', '图6']
# 数据列表
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]]
# 使用for循环遍历每个子图
for i, ax in enumerate(axs.flat):
ax.plot(data[i])
ax.set_title(titles[i])
ax.set_ylabel('y轴标题')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
```
这个例子中,我们使用`subplots`函数创建一个包含3行2列子图的画布,然后使用`for`循环遍历每个子图。对于每个子图,我们使用`plot`绘制数据,使用`set_title`设置标题,使用`set_ylabel`设置y轴标题。最后,我们使用`tight_layout`函数调整子图之间的间距,使得图形更加美观。
只有1列的多子图y轴坐标轴对齐
对于只有1列的多子图,可以使用`sharey=True`参数来保持它们的y轴坐标轴对齐。示例代码如下:
```python
import matplotlib.pyplot as plt
import numpy as np
# 创建两个子图
fig, axs = plt.subplots(nrows=2, ncols=1, sharex=True, sharey=True)
# 绘制第一个子图
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
axs[0].plot(x, y1)
axs[0].set_title('Subplot 1')
# 绘制第二个子图
y2 = np.cos(x)
axs[1].plot(x, y2)
axs[1].set_title('Subplot 2')
# 设置整个图的标题和x轴标签
fig.suptitle('Title')
fig.supxlabel('X Label')
# 显示图形
plt.show()
```
运行上述代码,将会创建一个包含两个子图的图形,它们的y轴坐标轴对齐。
阅读全文