Невозможно добавить цветовую панель в тепловую карту на холсте, используя matplotlib - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь добавить цветную полосу к графику, который я строю в GUI, однако, хотя код работает без строки цветовой полосы кода, при попытке добавить цветную полосу появляется сообщение об ошибке Объект «AxesSubplot» не имеет атрибута «get_array». Я пытался найти решение, но я не смог понять, что я делал неправильно. Любая помощь будет принята с благодарностью.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
import tkinter as tk

a = np.array([2,-3,4,-2,1,2,4,3,5])
a = a.reshape(3,3)

class Graph:
    #Draws and return a placeholder for a graph
    #@param parent is the Tk.Frame parent obj
    #@param title is the (string) title for the graph
    def __init__(self, parent, title=''):
        #Initialise graph
        self.title = title
        self.fig = Figure(figsize=(4,4))
        self.plot = self.fig.add_subplot()
        self.plot.set_title(self.title)
        self.plot.set_ylim(top=1)
        self.plot.set_xlim(right=255)
        self.plot.set_ylabel("Certainty")
        self.plot.set_xlabel("Pixel Value")

        #Draw
        self.canvas = FigureCanvasTkAgg(self.fig, master=parent)
        self.canvas.get_tk_widget().pack()
        self.canvas.draw()

        return

    def plotMaxDistHeat(self, maxDistMatrix):
        #Clear previous plot
        self.plot.clear()

        #Plot new results
        self.plot.set_title(self.title)

        self.plot.imshow(maxDistMatrix, cmap='coolwarm')
        self.fig.colorbar(self.plot)

        #Draw Graph
        self.canvas.draw()

root = tk.Tk()

canvas = tk.Canvas(bg='red')
canvas.pack()
graph = Graph(canvas, title='Test Graph')

graph.plotMaxDistHeat(a)

tk.mainloop()

1 Ответ

0 голосов
/ 01 мая 2020

заменить

self.fig.colorbar(self.plot)

на

self.fig.colorbar(self.plot.imshow(maxDistMatrix, cmap='coolwarm'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...