изменение графика графика на основе элементов словаря с помощью радиокнопок - PullRequest
0 голосов
/ 31 августа 2018

У меня есть словарь, содержащий несколько элементов. Я хотел бы создать один график с количеством переключателей, равным количеству элементов в словаре. Параметры переключателя - это ключи словаря, и соответствующие значения будут отображаться соответственно каждый раз, когда вы выбираете другой переключатель. Например:

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 голосов
/ 31 августа 2018

Вам необходимо создать оси, на которые будут наноситься данные, иначе он выберет текущие активные оси, то есть оси с переключателями в нем.

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()
...