10

我一直在寻找一种方法,可以在创建绘图后选择绘图上可见的系列。

我需要这个,因为我经常有很多系列的情节。它们太多了,无法同时绘制,我需要快速交互式地选择哪些系列是可见的。理想情况下,将有一个窗口,其中包含绘图和复选框中的系列列表,其中选中复选框的系列可见。

有谁知道这是否已经在某处实施?如果没有,那么有人可以指导我如何自己做吗?

谢谢!

奥马尔

4

3 回答 3

13

这完全取决于您愿意付出多少努力以及确切的要求是什么,但您可以打赌它已经在某个地方实施了:-)

如果主要目的是不使图像混乱,则使用内置功能可能就足够了;您可以在 matplotlib 示例库中找到相关代码:

如果你真的想要一个 UI,那么你可以通过限制绘图/数据的数量来保护性能,你通常会使用一个 GUI 工具箱,比如 GTK、QT 或 WX。在此处查找一些文章和示例代码:

于 2012-11-14T00:00:16.333 回答
2

如果您有几个或更少的图,带有复选框的列表会很好,但对于更多的图,弹出菜单可能会更好。不过,我不确定 matplotlib 是否可以实现这些。

我曾经实现这一点的方法是使用滑块从列表中选择绘图 - 基本上您使用滑块来设置应显示的系列的索引。每个数据集有几百个系列,所以这是快速浏览它们的好方法。

我的设置代码大致是这样的:

fig = pyplot.figure()
slax = self.fig.add_axes((0.1,0.05,0.35,0.05))
sl = matplotlib.widgets.Slider(slax, "Trace #", 0, len(plotlist), valinit=0.0)
def update_trace():
    ax.clear()
    tracenum = int(np.floor(sl.val))
    ax.plot(plotlist[tracenum])
    fig.canvas.draw()
sl.on_changed(update_trace)
ax = self.fig.add_axes((0.6, 0.2, 0.35, 0.7))
fig.add_subplot(axes=self.traceax)
update_trace()

这是一个例子:

绘图图像

于 2012-10-15T08:58:14.187 回答
0

现在 plot.ly 已经开源了他们的库,它是 python 中交互式绘图的一个非常好的选择。参见例如:https ://plot.ly/python/legend/#legend-names 。您可以单击图例迹线并选择/取消选择迹线。

如果您想嵌入 Ipython/Jupyter Notebook,这也很简单:https ://plot.ly/ipython-notebooks/gallery/

于 2016-02-24T01:17:05.890 回答