matplotlib复选框颜色

matplotlib复选框颜色,matplotlib,Matplotlib,我正在使用示例()中的check_buttons小部件 在具有多行的打印中,很难从文本中知道哪个复选框与哪个打印行对应,至少在单击该复选框并且用户查看是否可以判断哪一行已消失之前是如此 是否有人知道复选框的背景颜色是否可以与它影响的线条相同…类似于图例?您可以如下设置小部件框的颜色 import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import CheckButtons t = np.arang

我正在使用示例()中的check_buttons小部件

在具有多行的打印中,很难从文本中知道哪个复选框与哪个打印行对应,至少在单击该复选框并且用户查看是否可以判断哪一行已消失之前是如此


是否有人知道复选框的背景颜色是否可以与它影响的线条相同…类似于图例?

您可以如下设置小部件框的颜色

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

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
l2, = ax.plot(t, s2, lw=2)
plt.subplots_adjust(left=0.2)

rax = plt.axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(rax, ('2 Hz', '4 Hz', '6 Hz'), (False, True, True))

#Define colours for rectangles and set them
c = ['b', 'g', 'r']    
[rec.set_facecolor(c[i]) for i, rec in enumerate(check.rectangles)]


def func(label):
    if label == '2 Hz': l0.set_visible(not l0.get_visible())
    elif label == '4 Hz': l1.set_visible(not l1.get_visible())
    elif label == '6 Hz': l2.set_visible(not l2.get_visible())
    plt.draw()
check.on_clicked(func)

plt.show()

checkbutton面板的每个勾选框都是一个
matplotlib.patches.Rectangle
对象,可以根据需要选择。

是!非常感谢埃德·史密斯。我羞于说我花了多长时间试图弄明白这一点。很高兴它起作用了,matplotlib的小部件很奇怪,主要是为了方便而提供的,而且您可以更改的内容非常有限。幸运的是,矩形可以更改。如果你不需要简单的定制,最好是使用完整的gui框架(例如tkinter或wxpython)。我想我不能再推迟太久使用gui框架了……但多亏了你的帮助,现在我可以专注于其他事情了。