3

我绘制了一堆散点然后重绘画布:

self.display_points = ax.scatter(x,y)
wx.CallAfter(self.display.canvas.draw)

我有一个包含颜色的对象。如果用户从 GUI 更改了此项,我希望能够更改点的颜色而无需重新绘制数据。

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每个绘制的组件。是否可以在某个地方找到这些属性?谢谢。

4

1 回答 1

3

scatter返回一个PathCollection对象,你可以看到它有一个相对有限的 api 用于事后设置。类Collection族交换了以后更新的能力以获得更有效的绘图。

如果您没有使用 scatter 分别设置每个点的大小和颜色的能力,那么最好使用

self.display_points, = ax.plot(x, y, marker='o', linestyle='none')

这会给你一个Line2D对象,看起来和你的散点图一样。 Line2D有一个更灵活的api,其中包括set_markerset_markersize.

于 2013-02-15T00:08:23.113 回答