Matplotlib按钮绘制线

时间:2018-06-21 13:04:42

标签: python-2.7 matplotlib matplotlib-widget

我想创建可以显示(并用相同按钮隐藏)一行的东西。

这是我目前拥有的:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button


fig, ax = plt.subplots()

class Index(object):
   ind = 0

   def test(self, event):
     self.plt.plot([0, 0], [1, 1])
     plt.draw()


callback = Index()
axtest = plt.axes([0.81, 0.05, 0.1, 0.075])
btest = Button(axtest, 'Test')
btest.on_clicked(callback.test)


plt.show()

有人可以帮我这个脚本吗?我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

self.plt没有任何意义。另外,您的密码将始终添加一个新图。相反,您可能想要切换现有图的可见性(并可能更改数据)。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button


fig, ax = plt.subplots()

class Index(object):
    def __init__(self, line):
        self.line = line

    def test(self, event):
        if self.line.get_visible():
            self.line.set_visible(False)
        else:
            # possibly change data here, for now same data is used
            self.line.set_data([0,1],[0,1])
            self.line.set_visible(True)
            self.line.axes.relim()
            self.line.axes.autoscale_view()
        self.line.figure.canvas.draw()

line, = plt.plot([],[], visible=False)

callback = Index(line)
axtest = plt.axes([0.81, 0.05, 0.1, 0.075])
btest = Button(axtest, 'Test')
btest.on_clicked(callback.test)


plt.show()