Как создать события клика для отдельных фрагментов круговой диаграммы в python? - PullRequest
0 голосов
/ 10 июня 2019

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

Я попробовал это на Python IDLE

plt.figure(figsize=(6,6))
ax = plt.axes([0.1, 0.1, 0.8, 0.8])
labels = 'Utilization', 'A', 'B', 'C'
fracs = [25,20,35, 20]
explode=(0.05, 0, 0, 0)
p = plt.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%')
plt.title('Link Utilization', bbox={'facecolor':'0.8', 'pad':5})
w = p[0][0]
plt.show()
class PieEventHandler:
    def __init__(self,p):
        self.p = p
        self.fig = p[0].figure
        self.ax = p[0].axes
        self.fig.canvas.mpl_connect('button_press_event', self.onpress)
        self.fig.canvas.mpl_connect('button_press_event', self.onclick)
    def onpress(self, event):
        if event.inaxes!=self.ax:
            return
            for w in self.p:
                (hit,_) = w.contains(event)
                if hit:
                     print(w.get_label())

    def onclick(self,event):
        self.barchart()

    def barchart():
        objects = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp')
        y_pos = np.arange(len(objects))
        performance = [10,8,14,4,2,1]
        plt.bar(y_pos, performance, align='center', alpha=0.25)
        plt.xticks(y_pos, objects)
        plt.ylabel('Usage')
        plt.title('Programming language usage')
        plt.show()
handler = PieEventHandler(p[0])

Ожидаемый результат. Когда я нажимаю на круговую диаграмму, должна открываться подробная гистограмма этого среза. Фактический результат - печатается круговая диаграмма, а событие щелчка еще не работает.

...