Отладка интерактивных фигур matplotlib в ноутбуках Jupyter - PullRequest
1 голос
/ 06 марта 2020

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

Если я запускаю этот сценарий Python в качестве сценария, когда Я нажимаю на точку и получаю сообщение об ошибке «строка 15 в onpick TypeError: только скалярные целочисленные массивы могут быть преобразованы в скалярный индекс», что ожидается. event.ind - это список, и мне нужно изменить его на ind = event.ind[0], чтобы быть здесь правильным.

Однако, когда я запускаю это в записной книжке Jupyter, появляется цифра, но ошибка молча игнорируется, так что просто кажется, что код не работает. Есть ли способ заставить Jupyter показать мне, что произошла ошибка?

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x = [0, 1, 2, 3, 4, 5]
labels = ['a', 'b', 'c', 'd', 'e', 'f']
ax.plot(x, 'bo', picker=5)

# this is the transparent marker for the selected data point
marker, = ax.plot([0], [0], 'yo', visible=False, alpha=0.8, ms=15)

def onpick(event):
    ind = event.ind
    ax.set_title('Data point {0} is labeled "{1}"'.format(ind, labels[ind]))
    marker.set_visible(True)
    marker.set_xdata(x[ind])
    marker.set_ydata(x[ind])

    ax.figure.canvas.draw()  # this line is critical to change the linewidth

fig.canvas.mpl_connect('pick_event', onpick)

plt.show()
...