#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, ценю подсказки. Я добавил воспроизводимый пример фрейма данных для кода и изображение текущего вывода. Ошибок нет, и ожидаемый результат-название округа, отображаемое в левом верхнем углу графика при нажатии на каждую точку точечной диаграммы. 🙂