matplotlib怎么绘制多子图
时间: 2023-07-12 22:36:22 浏览: 52
你可以通过 `plt.subplot()` 函数在一个图中绘制多个子图,该函数的参数为 `numrows`, `numcols` 和 `plot_number`,表示子图的行数、列数和当前绘制的子图位置。例如,要在一个图中绘制 2 行 3 列的子图,可以按以下方式操作:
```
import matplotlib.pyplot as plt
# 绘制第一个子图
plt.subplot(2, 3, 1)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第二个子图
plt.subplot(2, 3, 2)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第三个子图
plt.subplot(2, 3, 3)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第四个子图
plt.subplot(2, 3, 4)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第五个子图
plt.subplot(2, 3, 5)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第六个子图
plt.subplot(2, 3, 6)
plt.plot([1, 2, 3], [4, 5, 6])
# 显示图形
plt.show()
```
这样就能在一个图中绘制 2 行 3 列共 6 个子图。
相关问题
matplotlib多子图设置legend
在 Matplotlib 中,可以使用 `plt.legend()` 方法为图形添加图例。对于多子图的情况,可以使用 `fig.legend()` 方法在整个图形上添加一个全局图例,或者在每个子图上分别添加局部图例。
以下是一个简单的例子,展示了如何在多个子图上添加局部图例:
```python
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]
# 创建子图
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
# 在第一个子图上绘制折线图,并添加图例
axs[0].plot(x, y1, label='y1')
axs[0].plot(x, y2, label='y2')
axs[0].legend()
# 在第二个子图上绘制折线图,并添加图例
axs[1].plot(x, y1, label='y1')
axs[1].plot(x, y2, label='y2')
axs[1].legend()
# 显示图形
plt.show()
```
在上面的代码中,我们创建了一个包含两个子图的图形,并在每个子图上绘制了两条折线。然后使用 `ax.legend()` 方法在每个子图上添加局部图例,以便表示不同的线条。如果需要在整个图形上添加全局图例,可以使用 `fig.legend()` 方法。
你可以根据自己的需求,修改图例的位置、标签、字体大小等属性。
绘制多子图柱形图
好的,您可以使用Matplotlib库来绘制多子图柱形图,以下是一个简单的示例代码:
``` python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.array([1, 2, 3, 4, 5])
y1 = np.array([10, 8, 6, 4, 2])
y2 = np.array([9, 7, 5, 3, 1])
y3 = np.array([12, 3, 6, 9, 15])
# 绘制子图
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(10, 4))
# 第一个子图
axs[0].bar(x, y1)
axs[0].set_title('Subplot 1')
# 第二个子图
axs[1].bar(x, y2)
axs[1].set_title('Subplot 2')
# 第三个子图
axs[2].bar(x, y3)
axs[2].set_title('Subplot 3')
# 显示图形
plt.show()
```
在这个示例中,我们首先生成了三组数据,然后使用`subplots()`函数生成一个包含三个子图的图形。接下来,使用`bar()`函数绘制每个子图的柱形图,并使用`set_title()`函数设置每个子图的标题。最后,使用`show()`函数显示图形。