2015-05-19 117 views

回答

2

可以设置插件箱颜色如下,

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对象可以是customised根据需要。

+0

是的!非常感谢@Ed Smith。我很惭愧地说,我已经试图弄清楚了这一点。 –

+0

很高兴它的工作,matplotlib的部件很奇怪,主要是为了方便而提供的,并且在你可以改变的地方非常有限。幸运的是矩形可以改变。如果你需要做任何事情,而不是简单的定制,最好去一个完整的gui框架(例如tkinter或者wxpython)。 –

+0

我想我不能再拖延到gui框架的时间了......但是,感谢您的帮助,因为我可以专注于其他事情。 –