好的,这里是第2轮感谢大家对前一个问题的帮助,但我很不幸回到了我开始的地方。所有这些都发生在我试图给这个图添加一条线的时候。传入的数据是来自另一个程序的列表。为了测试的目的,我让另一个程序输出[100110]。一条线我要100条,另一条线要110。最终这将是来自Arduino的实时数据。我一直收到这个错误。在
AttributeError Traceback (most recent call last)
/Users/Tyler/Desktop/Arduino/Graphing_22.py in on_redraw_timer(self, event)
284 #self.data.extend(self.datagen.next())
285
--> 286 self.draw_plot()
287
288 def on_exit(self, event):
/Users/Tyler/Desktop/Arduino/Graphing_22.py in draw_plot(self)
240 visible=self.cb_xlab.IsChecked())
241
--> 242 self.plot_data.set_xdata(np.arange(len(self.data[0])))
243 #self.plot_data.set_xdata(np.arange([1,1000])
244 self.plot_data.set_ydata(np.array(self.data[1]))
AttributeError: 'list' object has no attribute 'set_xdata'
以下是传入数据的代码以及发生错误的位置。在
^{pr2}$谢谢你们的帮助!在
根据你的评论:
您的问题在于
plot
返回它生成的line对象的列表。既然你看起来是在画一条直线,那么就要确保你看到的是列表的第一个(也是唯一一个)元素。在或者
^{pr2}$或者
它看起来像您定义
plot_data
返回一个列表的方式。另外,我不确定axes.plot(*args, **kwargs)
与一个参数一起使用时,是否用于任一轴上的数据。我查了一下文件发现:返回值是添加的行的列表。这里有个类型错误。以下是
^{pr2}$set_xdata(x)
的文档:这是课堂上的:
因此,您可以考虑声明类似
self.line = plt.lines.Line2D(self.x_data, self.y_data, linewidth=1, color=(1,1,0) )
的内容,其中您必须使用如下内容:希望有帮助!我引用了:
update matplotlib plot
http://matplotlib.org/api/axes_api.htmlhttp://matplotlib.org/api/artist_api.html#matplotlib.lines.Line2D.set_xdata
相关问题 更多 >
编程相关推荐