为什么plt.plot正常,但是fig, axs = plt.subplots(2, 2, figsize=(12, 4)) 用axs[0].plot就会报错
时间: 2024-03-21 15:43:32 浏览: 103
可能是因为 `axs` 是一个包含 2 行 2 列的 `AxesSubplot` 对象数组,需要使用类似于 `axs[row_index][col_index].plot` 这样的方法访问每个子图。所以,对于第一个子图,你需要使用 `axs[0, 0].plot` 来绘制。具体的代码可以参考以下示例:
```
import matplotlib.pyplot as plt
import numpy as np
# 创建一个包含 2 行 2 列的子图
fig, axs = plt.subplots(2, 2, figsize=(12, 4))
# 在第一个子图中绘制 sin(x)
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
axs[0, 0].plot(x, y)
# 在第二个子图中绘制 cos(x)
y = np.cos(x)
axs[0, 1].plot(x, y)
# 在第三个子图中绘制 tan(x)
y = np.tan(x)
axs[1, 0].plot(x, y)
# 在第四个子图中绘制 exp(x)
y = np.exp(x)
axs[1, 1].plot(x, y)
# 显示图形
plt.show()
```
相关问题
def illustrate(firstH,secondβ,thirdc,fourthfri,fifthuw): fig, axs = plt.subplots(5) fig.suptitle('Vertically stacked subplots') axs[0].plot(firstH, 1,color='red') axs[1].plot(secondβ, 1,color='red') axs[2].plot(thirdc, 1) axs[3].plot(fourthfri, 1) axs[4].plot(fifthuw, 1) plt.savefig('%d.jpg') canvas=FigureCanvasAgg(fig) response=HttpResponse(content_type='image/png') canvas.print_png(response) plt.close(fig) xzt=response return xzt这段代码1画的图为什么只有坐标轴
这段代码中的 `axs[0].plot(firstH, 1,color='red')` 等语句只绘制了一条水平线,没有绘制出完整的曲线图。这是因为在 `plot` 函数中只传入了一个参数 `firstH`,而没有传入 x 轴坐标。因此,matplotlib 只会在 x 轴上等间隔地绘制几个点,然后将这些点用一条直线连接起来,形成了一条水平线。
要绘制出完整的曲线图,需要在 `plot` 函数中同时传入 x 轴和 y 轴坐标。例如,对于第一个子图,应该这样写:
```python
axs[0].plot(x_values, firstH, color='red')
```
其中 `x_values` 是一个与 `firstH` 长度相等的列表,里面存储了 x 轴的坐标值。同样的方法也适用于其他子图的绘制。
fig, axs = plt.subplots(r,shared=‘all’)
`fig, axs = plt.subplots(r, shared='all')` 是一个 Matplotlib 绘制多个子图时比较方便的方式,它可以创建一个 `r` 行、`r` 列的子图网格,并将它们存储在一个名为 `axs` 的二维 numpy 数组中。
`shared='all'` 参数表示所有子图共享相同的 x 轴和 y 轴刻度。这意味着,如果某个子图的数据范围改变了,所有其他子图的刻度也会相应地调整。
以下是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, axs = plt.subplots(2, 2, figsize=(8, 6), sharex='all', sharey='all')
axs[0, 0].plot(x, y1)
axs[0, 1].plot(x, y2)
axs[1, 0].plot(x, y1+y2)
axs[1, 1].plot(x, y1*y2)
plt.show()
```
在这里,`fig, axs = plt.subplots(2, 2, figsize=(8, 6), sharex='all', sharey='all')` 创建了一个 2x2 的子图网格,每个子图都共享相同的 x 轴和 y 轴刻度。然后,我们在四个子图中绘制了不同的函数。注意,`axs` 是一个 2x2 的 numpy 数组,可以用来对每个子图进行进一步的定制。
阅读全文