Jan*_*ert 4 indexing matplotlib python-3.x
我基本上有以下脚本.但它在运行时遇到以下错误TypeError: 'Figure' object does not support indexing
就失败了axarr[0].plot(x,y).我试着搜索一下但发现了与创建子图有类似的错误...而且我只添加/替换数据(我不确定,因为它是matlab文件的副本,而我没有matlab).
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 2, 0.01)
for idx in range(1, 10):
a = 1 + (idx - 1) / 10
y = a ** x
axarr, fig = plt.subplots(1,1)
axarr[0].plot(x,y)
axarr.axis([0, 4, 0, 85])
axarr[0].grid(True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
可能我得到这个错误,因为我在一个循环中使用一个数字,但它看起来它在迭代1失败都准备好了.那么我错了什么或者什么可以更好以便这个工作(几乎等于matlab文件,请参阅下面的部分脚本)?
我希望有人可以提供帮助.
matlab文件相同的样本是这样的:
x = 0:0.01:4;
for idx = 1:10
a = 1 + (idx-1)/10;
y = a.^x;
z = 2 * y
subplot(111)
plot(x,y)
hold on
plot(x(1:400),z)
axis([0 4 0 85])
pause
hold off
end
Run Code Online (Sandbox Code Playgroud)
这里有两个问题:
回归plt.subplots是一个元组(Figure, array of Axes).因此,分配是
fig, axarr = plt.subplots(1,1)
Run Code Online (Sandbox Code Playgroud)上面并没有完全解决问题,因为你最终会得到一个类似的错误(TypeError: 'AxesSubplot' object does not support indexing).这是因为在使用仅一列和一行的情况下,默认情况下plt.subplots将减少array of Axes到单个轴.此行为由squeeze参数控制.使用有效的方法plt.subplots是这样
fig, axarr = plt.subplots(1,1)
axarr.plot(x,y)
Run Code Online (Sandbox Code Playgroud)
要么
fig, axarr = plt.subplots(1,1, squeeze=False)
axarr[0,0].plot(x,y)
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要1,1作为参数,因为这些是默认值.
| 归档时间: |
|
| 查看次数: |
10813 次 |
| 最近记录: |