Не могу обновить текст matplotlib в pick_event

#python-3.x #matplotlib #onclicklistener #interaction #bubble-chart

Вопрос:

Пожалуйста, помогите взглянуть на этот фрагмент кода Python и посмотреть, нет ли в нем чего-нибудь неправильного. Кажется, я не могу обновить свой текст, чтобы показать название округа в соответствии с пузырьком, на который я нажимаю. Я приложил изображение того, как будет выглядеть диаграмма. Спасибо! 🙂

Примечание: Спасибо Трентону за напоминание. Я отредактировал этот вопрос, чтобы включить воспроизводимую структуру данных случайных чисел для справки.

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

%matplotlib notebook

county = list(string.ascii_uppercase)

np.random.seed(444)
x_data = list(np.random.uniform(0, 0.1, 26))
y_data = list(np.random.gamma(2, 1, 26)/10)
pop = list(np.random.randint(10000, 500000, 26))

data = pd.DataFrame({'county': county, 'x': x_data, 'y': y_data, 'population': pop})

c1 = 'blue' #blue
c2 = 'red' #red
n = len(data['x'])

fig, ax = plt.subplots(figsize=(15,8))
chart = plt.scatter(data['x']*100, 
                    data['y']*100, 
                    c=data['y'], 
                    cmap='RdBu',
                    s=np.sqrt(data['population']/np.pi), 
                    alpha=.5,
                    picker=5)
plt.gca().set_facecolor('gainsboro')
plt.gca().set_ylabel('Y value, in %', fontsize=12)
plt.gca().set_xlabel('X value, in %', fontsize=12)
plt.gca().set_xlim(0,8)
plt.gca().set_ylim(0,70)
plt.gca().set_axisbelow(True)
plt.gca().grid(color='lightgrey')

cbar = fig.colorbar(chart)
cbar.set_ticks([0.3, 0.4, 0.5, 0.6, 0.7, 0.8])
cbar.ax.set_yticklabels(['30%', '40%', '50%','60%','70%','80%'])
    
t = ax.text(1, 75, 'Selected county:', fontsize=12)

def onpick(event):
    county = data.iloc[event.ind[0]]['county']
    t.set_text(1, 75, 'Selected county: {} County'.format(county), fontsize=12)
        

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

Вывод текущего графика: https://i.stack.imgur.com/oPwhz.png

Комментарии:

1. Спасибо @TrentonMcKinney, ценю подсказки. Я добавил воспроизводимый пример фрейма данных для кода и изображение текущего вывода. Ошибок нет, и ожидаемый результат-название округа, отображаемое в левом верхнем углу графика при нажатии на каждую точку точечной диаграммы. 🙂