matplotlib怎么绘制多子图
时间: 2023-07-12 18:36:22 浏览: 117
你可以通过 `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 个子图。
相关问题
举例用python 和matplotlib 绘制大小不同,多行多列的多子图示例
在Python中,你可以使用Matplotlib库创建多行多列的子图,同时调整每个子图的大小。以下是一个简单的例子,我们将绘制4个小一些的子图,分为2行2列:
```python
import matplotlib.pyplot as plt
# 创建一个2x2的网格布局
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 6), facecolor='white') # 调整网格的大小和背景颜色
# 图片数据(这里用随机生成的数据)
data1 = [1, 2, 3]
data2 = [4, 5, 6]
data3 = [7, 8, 9]
data4 = [10, 11, 12]
# 给每个子图添加图像
axs[0, 0].plot(data1)
axs[0, 0].set_title('Subplot 1')
axs[0, 1].bar(range(3), data2)
axs[0, 1].set_title('Subplot 2 (Bar Chart)')
axs[1, 0].scatter(range(3), data3)
axs[1, 0].set_title('Subplot 3 (Scatter Plot)')
axs[1, 1].hist(data4, bins=5)
axs[1, 1].set_title('Subplot 4 (Histogram)')
# 显示所有子图
plt.tight_layout() # 自动调整子图之间的间距
plt.show()
```
在这个示例中,`subplots()`函数创建了子图,`axs`是一个二维数组,可以分别对每个子图进行操作。每个子图通过索引来引用并设置其内容。
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()` 方法。
你可以根据自己的需求,修改图例的位置、标签、字体大小等属性。
阅读全文