Событие Mouseover для баров - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался создать интерактивный график, используя matplotlib, где я получал индекс щелчкового индекса гистограммы. Таким образом я мог получить доступ к некоторым деталям, хранящимся в массиве, используя индекс, и распечатать его. У меня есть пример кода ниже, который можно использовать для линейных графиков.

    if isinstance(event.artist, Line2D):
        thisline = event.artist
        xdata = thisline.get_xdata()
        ydata = thisline.get_ydata()
        ind = event.ind
        print('onpick1 line:', np.column_stack([xdata[ind], ydata[ind]]))

Однако я не смог получить такой индекс / индекс для гистограммы. Есть ли работа вокруг?

1 Ответ

1 голос
/ 10 апреля 2020

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

import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.random.rand(len(x))
info = list("ABDCEFGHIJ")

bars = plt.bar(x,y, picker=True)

def on_pick(evt):
    ind = bars.index(evt.artist)
    print(ind, info[ind])

plt.gcf().canvas.mpl_connect("pick_event", on_pick)


plt.show()
...