加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-3.x – 绘图时的Matplotlib索引错误

发布时间:2020-12-20 12:02:55 所属栏目:Python 来源:网络整理
导读:我基本上有以下脚本.但是在使用以下errorTypeError运行期间失败:’Figure’对象不支持索引 ?在线axarr [0] .plot(x,y).我试着搜索一下但是在创建子图时发现了类似的错误…而且我只添加/替换数据(我不确定,因为它是matlab文件的副本,而我没有matlab). import
我基本上有以下脚本.但是在使用以下errorTypeError运行期间失败:’Figure’对象不支持索引
?在线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,85])
    axarr[0].grid(True)
    plt.show()

可能我得到这个错误,因为我在一个循环中使用一个数字,但它看起来它在迭代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

解决方法

这里有两个问题:

> plt.subplots的返回是(图,Axes数组)的元组.因此,分配是

fig,axarr = plt.subplots(1,1)

>上面并没有完全解决问题,因为你最终会遇到类似的错误(TypeError:’AxesSubplot’对象不支持索引).这是因为默认情况下plt.subplots将Axes数组减少为单轴,以防只使用一列和一行.
此行为由squeeze参数控制.因此,使用plt.subplots的有效方法

fig,1)
axarr.plot(x,y)

要么

fig,axarr  = plt.subplots(1,1,squeeze=False)
axarr[0,0].plot(x,y)

请注意,您不需要1,1作为参数,因为这些是默认值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读