使用单选按钮根据词典的项目更改图形的图

时间:2018-08-31 00:01:22

标签: python-2.7 matplotlib radio-button nsdictionary

我有一本包含许多项目的字典。我想用单选按钮的数量等于字典中项目的数量来创建单个图形。单选按钮选项将是字典的键,并且每次您选择其他单选按钮时,将相应地绘制关联的值。例如:

from matplotlib.widgets import Slider, Button, RadioButtons

data = {'A' : [1,2,4,6,7,8,10],'B' : [1,2,4,6,4,3,7], 'C' : [3,2,1,6,2,3,4]}

axcolor = 'lightgoldenrodyellow'
rax = plt.axes([0.025, 0.5, 0.15, 0.15], facecolor=axcolor)
radio = RadioButtons(rax, data.keys(), active=0)

def chooseGraph(graph):
    [plt.plot(data[names]) for names in data.keys()]
radio.on_clicked(chooseGraph)

plt.show()

执行此代码时,我得到了单选按钮,但没有图形。当我选择一个按钮时,所有3个数据集都绘制在单选按钮的顶部,并且更改按钮只会改变颜色。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要创建一个用于绘制数据的轴,否则它将选择当前活动的轴,即其中带有单选按钮的轴。

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

data = {'A' : [1,2,4,6,7,8,10],'B' : [1,2,4,6,4,3,7], 'C' : [3,2,1,6,2,3,4]}

fig, ax = plt.subplots()
ax.plot(data["A"])

rax = fig.add_axes([0.025, 0.5, 0.15, 0.15])
radio = RadioButtons(rax, sorted(data.keys()), active=0)

def chooseGraph(graph):
    ax.clear()
    ax.plot(data[graph])
    fig.canvas.draw_idle()

radio.on_clicked(chooseGraph)

plt.show()