在matplotlib中绘图后调整标记的颜色、大小和类型
我画了一些散点图,然后重新绘制了画布:
self.display_points = ax.scatter(x,y)
wx.CallAfter(self.display.canvas.draw)
我有一个对象,它包含了颜色。如果用户在界面上改变了这个颜色,我想在不重新绘制数据的情况下,直接改变这些点的颜色。
def _color_changed(self):
if hasattr(self, '_display_points'):
self._display_points.set_facecolors(self.color)
wx.CallAfter(self.display.canvas.draw)
那要怎么做呢?比如说,如何改变标记的大小和类型……也就是说,X
在 _display_points.set_X
中应该是什么,才能改变每个绘制的组件。这些属性在哪里可以找到呢?谢谢。
1 个回答
3
scatter
函数会返回一个叫做 PathCollection
的对象。这个对象在之后设置属性时功能比较有限。Collection
这个类的家族牺牲了后期更新的能力,以换取更高效的绘图速度。
如果你并没有利用 scatter
来单独设置每个点的大小和颜色,那么使用下面的代码会更好:
self.display_points, = ax.plot(x, y, marker='o', linestyle='none')
这样你会得到一个 Line2D
对象,它看起来和你的散点图一模一样。Line2D
有一个更灵活的 api,其中包括 set_marker
和 set_markersize
这些功能。