从matplotlib中的CheckButtons对象中检索选定的值

ill*_*umi 4 python matplotlib

我有两个CheckButtons小部件,每个小部件有3个元素.当选择其中一个CheckButtons时,我想读取两个小部件的状态,然后相应地更新图表.

滑块小部件有一个.val用于返回滑块的状态,但CheckButtons小部件似乎有点尴尬(或者我错过了一些明显的东西)?

简短的例子:

import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

class Example:

    def updateChart(self, event):
        colour = self.colours.labels # gets labes as text object, is there an easy way of getting the status?
        print colour
        # measurement = measurements.something

    def __init__(self):
        colourax = plt.axes([0.5, 0.4, 0.09, 0.2])
        measurementax = plt.axes([0.5, 0.6, 0.09, 0.2])
        self.colours = CheckButtons(colourax, ('Red', 'Green', 'Blue'), (False, False, False))
        self.measurements = CheckButtons(measurementax, ('1', '2', '3'), (False, False, False))
        self.colours.on_clicked(self.updateChart)
        self.measurements.on_clicked(self.updateChart)

    def run(self):
        plt.show()

ex = Example()
ex.run()
Run Code Online (Sandbox Code Playgroud)

小智 7

我知道这有点尴尬,但您可以在复选框中检查十字线的可见性.

import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

colourax = plt.axes([0.5, 0.4, 0.09, 0.2])
colours = CheckButtons(colourax, ('Red', 'Green', 'Blue'), (False, False, False))

isRedChecked = colours.lines[0][0].get_visible()
isGreenChecked = colours.lines[1][0].get_visible()
isBlueChecked = colours.lines[2][0].get_visible()
Run Code Online (Sandbox Code Playgroud)