Axes来自plt.subplots()是一个"numpy.ndarray"对象,没有"plot"属性。
Axes来自plt.subplots()是一个"numpy.ndarray"对象,没有"plot"属性。
如果您正在尝试理解错误消息,则下面的信息可能是多余的。请先阅读@user707650的答案。
使用MatPlotLib,我想要一个通用的脚本,根据我的数据创建以下内容。
一个窗口包含a个子图,按照每列b个子图排列。我想要能够更改a和b的值。
如果我有2a个子图的数据,我想要2个窗口,每个窗口中有先前描述的"a个子图,按照每列b个子图排列"。
我要绘制的x和y数据是存储在np.arrays中的浮点数,结构如下:
- 所有图的x数据都相同,长度为5。
'x_vector': [0.000, 0.005, 0.010, 0.020, 0.030, 0.040]
- 所有图的y数据存储在y_vector中,第一个图的数据存储在索引0到5处,第二个图的数据存储在索引6到11处,第三个图的数据存储在索引12到18处,第四个图的数据存储在索引19到24处,依此类推。
总共,对于这个数据集,我有91个图(即y_vector中存储的546个值)。
尝试:
import matplotlib.pyplot as plt # 选项: plots_tot = 14 #总图数。实际上,将有7 * 13 = 91个图。 location_of_ydata = 6 #第n个图的值可以在y_vector的索引'n*6'到'n*6 + 6'处找到。 plots_window = 7 #每个窗口中的总图数。 rows = 2 #行数,即每列的子图数。 # 计算列数: prim_cols = plots_window / rows extra_cols = 0 if plots_window % rows > 0: extra_cols = 1 cols = prim_cols + extra_cols print 'cols:',cols print 'rows:',rows # 绘图: n = 0 x = 0 fig, ax = plt.subplots(rows, cols) while x <= plots_tot: ax[x].plot(x_vector, y_vector[n:(n+location_of_ydata)], 'ro') if x % plots_window == plots_window - 1: plt.show() #每7个图显示一个新窗口。 n = n + location_of_ydata x = x + 1
我得到以下错误:
cols: 4 rows: 2 Traceback (most recent call last): File "Script.py", line 222, inax[x].plot(x_vector, y_vector[n:(n+location_of_ydata)], 'ro') AttributeError: 'numpy.ndarray' object has no attribute 'plot'