在matplotlib图中交互式选择系列

时间:2012-10-15 08:31:34

标签: python matplotlib

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

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

有没有人知道这是否已经在某处实现了?如果没有,那么有人可以指导我自己该怎么做?

谢谢!

奥马尔

3 个答案:

答案 0 :(得分:12)

这一切都取决于你愿意做多少努力以及具体要求是什么,但你可以打赌它已经在某处实施: - )

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

如果你真的想拥有一个用户界面,那么你可以通过限制绘图/数据量来保护性能,你通常会使用GUI工具箱,如GTK,QT或WX。在这里查看一些文章和示例代码:

答案 1 :(得分: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()

以下是一个例子:

Plot image

答案 2 :(得分:0)

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

如果你想嵌入Ipython / Jupyter笔记本,这也很简单:https://plot.ly/ipython-notebooks/gallery/