Python -тепловая карта Seaborn привязывается к событию щелчка мышью
Я разрабатываю простой (пока) графический интерфейс на tkinter. Сейчас у меня есть окно с графическим интерфейсом canvas
объект и древовидная таблица в одном окне. Моя цель - загрузить csv
Данные генерируют тепловую карту и используют позиции, чтобы показать дополнительные данные о выбранных местоположениях. Я уже могу создать тепловую карту (рисунок ниже) из csv
,
Что мне нужно сейчас для canvas
определить мой щелчок мышью и на основе данных о передаче кликов из одного и того же (или другого, это пока не имеет значения) csv
к столу. Я попробовал несколько вещей, но я не совсем понимаю, как назначить данные на холсте или в таблице, чтобы они могли их распознать.
def tableDisplayFromGraph(self):
tableframe = tk.Frame(self.master)
tableframe.grid(row=2, column=10, ipadx=4, pady=2, sticky ="e") ## Packing against tableframe Frame
COLUMNS = ['Type', 'Value'] ## Column Headers for Data
## See Documentation for more info on Treeview
table = ttk.Treeview(tableframe, columns=COLUMNS, show='headings', padding=4)
table.grid(row=0, column=0)
for column in COLUMNS: ## Setting Column Header
table.heading(column, text=column)
scroll = tk.Scrollbar(tableframe, command=table.yview) ## Adding Vertical Scrollbar
scroll.grid(row=0, column=1) # problem how to set scrollbar inside the table :/
table.configure(yscrollcommand=scroll.set) ## Attach Scrollbar :/
def canvas(self):
f = plt.figure(figsize=(8, 8), dpi=110)
a = f.add_subplot(111)
if not self.Data.empty:
pivot_table = self.Data.pivot('Rows', 'Columns', 'B635 Mean')
plt.xlabel('Columns', size=12)
plt.ylabel('Rows', size=12)
plt.title('Heat Map', size=15)
sns.heatmap(pivot_table, annot=True, annot_kws={'size': 8},fmt="0.0f", linewidths=0, square=True, cmap='Reds')
#a.clear()
canvasFig = FigureCanvasTkAgg(f, master=self.master)
canvasFig.get_tk_widget().grid(row=0, column=0, rowspan=5, columnspan=5, padx=30, pady=10, sticky="ew")
navigatorFrame = tk.Frame(self.master)
navigatorFrame.grid(row=21, column=0, columnspan=5, padx=30, sticky="nw")
toolbar = NavigationToolbar2TkAgg(canvasFig, navigatorFrame)
toolbar.update()
canvasFig._tkcanvas.grid()
f.canvas.mpl_connect('pick_event', self.pick)
def pick(self, event):
if canvas.find_withtag(CURRENT):
canvas.itemconfig(CURRENT, fill="blue")
canvas.update_idletasks()
canvas.after(200)
canvas.itemconfig(CURRENT, fill="red")
canvas.bind("<Button-1>", self.pick)enter code here
Когда я нахожусь вокруг тепловой карты, холст не показывает координаты x,y. Пик это моя функция для события клика. Любая помощь будет оценена.
Это изображение моего графического интерфейса. Слева - моя тепловая карта, а справа - виджет дерева в виде таблицы для отображения дополнительных данных: