python用for循环和axs画多子图,每个字图都有y轴标题
时间: 2023-08-04 15:18:40 浏览: 186
可以使用以下代码实现:
```
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轴坐标轴对齐。
只有一列的多子图y轴名称对齐
对于只有一列的多子图,要将它们的y轴名称对齐,可以使用`fig.align_ylabels()`方法。示例代码如下:
```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')
axs[0].set_ylabel('Y Label')
# 绘制第二个子图
y2 = np.cos(x)
axs[1].plot(x, y2)
axs[1].set_title('Subplot 2')
axs[1].set_ylabel('Y Label')
# 设置整个图的标题和x轴标签
fig.suptitle('Title')
fig.supxlabel('X Label')
# 对齐y轴标签
fig.align_ylabels()
# 显示图形
plt.show()
```
运行上述代码,将会创建一个包含两个子图的图形,它们的y轴坐标轴和名称都对齐。
阅读全文