我们在直接使用 matplotlib.pyplot
对数组进行画图的时候,有时候出现一个报错AttributeError: 'numpy.ndarray' object has no attribute 'plot'
,在网上查找了一圈终于找到了解决办法,整个过程如下:
1.先看看我的画图代码:
def plot_mul_points(array):
fig,ax = plt.subplots(3,3,figsize=(15,10)) ########这一行十分重要
for index in range(0,len(array)):
cur_array = array[index] #当前数组
rounds = []
for i in range(0, len(cur_array)):
rounds.append(i)
ax[index].plot(np.array(rounds),np.array(cur_array)) ########这一行也十分重要
plt.show()
看这里,万变不离其中,只要是你使用了下面两行代码就可以参考:
fig,ax = plt.subplots(3,3,figsize=(15,10)) #这里获得ax
....
ax[index].plot(len(cur_array),np.array(cur_array)) #这里使用ax开始画图
2.这是创建画布时,ax是一个array,这个时候我们需要对其进行拉平处理,后我们再次使用它来plot,请注意下面#
后面的文字说明,修改后的主要代码如下:
fig,ax = plt.subplots(3,3,figsize=(15,10)) #这里获得ax
ax = ax.ravel() ##########注意:要进行拉平这一步
....
ax[index].plot(len(cur_array),np.array(cur_array)) #这里使用ax开始画图
3.最后再试试就能画图了,我这里画的代码和图如下:
完整代码:
def plot_mul_points(array):#画出9个图 不需要自规定位置
fig,ax = plt.subplots(3,3,figsize=(15,10))
ax = ax.ravel()
for index in range(0,len(array)):
cur_array = array[index] #当前数组
rounds = []
for i in range(0, len(cur_array)):
rounds.append(i)
ax[index].plot(np.array(rounds),np.array(cur_array))
plt.show()
#编写测试
def test():
array=[[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]
,[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]
,[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]]
plot_mul_points(array)
结果图:
注意:欢迎转载,转载时请注明来源