matplotlib를 사용한 Tkinter-히트 맵 컬러 바가 나머지 축에서 지워지지 않음

카일 캐 로우

사용자가 선택한 csv의 히트 맵을 표시하기 위해 tkinter 및 matplotlib (및 seaborn)을 사용하여 GUI를 구축하고 있습니다. 히트 맵이로드 될 때마다 적절한 컬러 바로 업데이트되기를 원합니다. 새 데이터를로드 할 때마다 축을 지우지 만 컬러 바가 사라지지 않고 새 히트 맵이 옆으로 찌그러집니다. 새 히트 맵이 공간을 제대로 채울 수 있도록 이전 컬러 바도 지워 졌으면합니다.

내 문제를 과시하기 위해 MWE를 만들었습니다.

import numpy as np
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import seaborn as sns

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.state('zoomed')
        self.winfo_toplevel().title('App')

        frame = tk.Frame(self)
        frame.pack()

        button_reload = tk.Button(frame, text='Reload data', command=self.reload_data)
        button_reload.pack()

        self.fig = Figure()
        self.ax = self.fig.add_subplot(111)

        self.fig.tight_layout()  # Small margins
        self.ax.axis('off')  # Disable axis lines
        self.canvas_heatmap = FigureCanvasTkAgg(self.fig, master=frame)
        self.canvas_heatmap.get_tk_widget().pack(expand=True, fill='both')

    def reload_data(self):
        # dummy data for example
        data = np.random.rand(3,3)

        # Clear old heatmap from axes
        self.ax.clear()

        # Set up new heatmap
        self.ax = sns.heatmap(data, ax=self.ax, linewidth=0.1)
        self.canvas_heatmap.draw()
        self.canvas_heatmap.get_tk_widget().pack(expand=True, fill='both')  # necessary?
    
def quit_GUI():
    root.quit()
    root.destroy()

if __name__ == '__main__':
    root = App()
    root.protocol('WM_DELETE_WINDOW', quit_GUI)  # Kill process on clicking 'X'
    root.mainloop()

다음은 내가 원하지 않을 때 컬러 바가 주변에 달라 붙는 것을 볼 수있는 사진입니다.

아직 까진 좋음: 첫 번째 히트 맵

나쁜: 두 번째 히트 맵

보다 나쁜: 여기에 이미지 설명 입력

히트 맵이 은색이 될 때까지 계속 이렇게 할 수 있습니다.

소설

그림을 지우고 도끼를 다시 만들어야합니다.

import numpy as np
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import seaborn as sns

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.state('zoomed')
        self.winfo_toplevel().title('App')

        frame = tk.Frame(self)
        frame.pack()

        button_reload = tk.Button(frame, text='Reload data', command=self.reload_data)
        button_reload.pack()

        self.fig = Figure()
        self.canvas_heatmap = FigureCanvasTkAgg(self.fig, master=frame)
        self.canvas_heatmap.get_tk_widget().pack(expand=True, fill='both')

    def reload_data(self):
        data = np.random.rand(3,3)
        self.fig.clear()
        ax = self.fig.add_subplot(111)
        ax.axis('off')  # Disable axis lines
        line = sns.heatmap(data, ax=ax, linewidth=0.1)
        self.fig.tight_layout()  # Should go after the drawing
        self.canvas_heatmap.draw()
        # ~ self.canvas_heatmap.get_tk_widget().pack(expand=True, fill='both')  # not necessary
        
if __name__ == '__main__':
    root = App()
    # ~ root.protocol('WM_DELETE_WINDOW', quit_GUI)  # not needed
    root.mainloop()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Gnuplot의 히트 맵에 제로 축이 나타나지 않음

분류에서Dev

python matplotlib-히트 맵의 크기를 조정하지 않고 컬러 바를 이동하는 방법은 무엇입니까?

분류에서Dev

Matplotlib 컬러 맵 사용자 지정

분류에서Dev

Matplotlib : 목록에 저장된 x, y, z 값을 사용하여 히트 맵의 양면에 데이터가 표시되지 않음

분류에서Dev

캘린더 히트 맵 사용. 월 또는 범례를 표시하지 않음

분류에서Dev

mod_deflate가 워드 프레스 사이트에서 js를 압축하지 않음

분류에서Dev

Skobbler는 히트 맵에 사용자 지정 POI를 추가합니다.

분류에서Dev

Android에서 edittext에 텍스트를 입력 한 후 setError가 지워지지 않음

분류에서Dev

Android에서 edittext에 텍스트를 입력 한 후 setError가 지워지지 않음

분류에서Dev

삼바를 통한 네트워크 프린터가 lubuntu 15.10에서 작동하지 않음

분류에서Dev

히트 맵 MATLAB에 컬러 바 표시

분류에서Dev

Python에서 matplotlib를 사용하여 지정된 불연속 색상 매핑으로 히트 맵 만들기

분류에서Dev

컬러 매트릭스를 사용하여 파란색 채널 만 사용하여 컬러 비트 맵을 회색 음영 이미지로 변환

분류에서Dev

컬러 매트릭스를 사용하여 파란색 채널 만 사용하여 컬러 비트 맵을 회색 음영 이미지로 변환

분류에서Dev

백본에서 나머지 API를 사용하여 컬렉션 가져 오기

분류에서Dev

tkinter에서 카운트 다운 타이머가 업데이트되지 않음

분류에서Dev

Android Emulator에서 UI가 완전히 채워지지 않음

분류에서Dev

Android Emulator에서 UI가 완전히 채워지지 않음

분류에서Dev

사용자 지정 비트 맵 개체가 PictureBox에서 올바르게 표시되지 않습니다.

분류에서Dev

3 가지 변수에 기반한 히트 맵

분류에서Dev

$ .ajax가 컨트롤러에 부딪히지 않음

분류에서Dev

Samba 서버가 네트워크에 나타나지 않음

분류에서Dev

ASP.NET MVC 컨트롤러가 ModelView를 사용하여 PartialView에 올바른 값을 전달하지 않음

분류에서Dev

스프레드 시트 데이터를 사용하는 Google 타임 맵 : 정보창이 닫히지 않음

분류에서Dev

서브 플롯을 사용할 때 Seaborn 히트 맵 너비가 일치하지 않습니다.

분류에서Dev

크기가 조정 된 이미지가 비트 맵에 올바르게 그려지지 않음

분류에서Dev

Python : Tkinter를 사용할 때 스크립트가 종료되지 않음

분류에서Dev

Ajax를 사용하면 MVC에서 제출시 텍스트 상자가 지워지지 않습니다.

분류에서Dev

Python Seaborn 히트 맵 그리드-예상 열을 사용하지 않음

Related 관련 기사

  1. 1

    Gnuplot의 히트 맵에 제로 축이 나타나지 않음

  2. 2

    python matplotlib-히트 맵의 크기를 조정하지 않고 컬러 바를 이동하는 방법은 무엇입니까?

  3. 3

    Matplotlib 컬러 맵 사용자 지정

  4. 4

    Matplotlib : 목록에 저장된 x, y, z 값을 사용하여 히트 맵의 양면에 데이터가 표시되지 않음

  5. 5

    캘린더 히트 맵 사용. 월 또는 범례를 표시하지 않음

  6. 6

    mod_deflate가 워드 프레스 사이트에서 js를 압축하지 않음

  7. 7

    Skobbler는 히트 맵에 사용자 지정 POI를 추가합니다.

  8. 8

    Android에서 edittext에 텍스트를 입력 한 후 setError가 지워지지 않음

  9. 9

    Android에서 edittext에 텍스트를 입력 한 후 setError가 지워지지 않음

  10. 10

    삼바를 통한 네트워크 프린터가 lubuntu 15.10에서 작동하지 않음

  11. 11

    히트 맵 MATLAB에 컬러 바 표시

  12. 12

    Python에서 matplotlib를 사용하여 지정된 불연속 색상 매핑으로 히트 맵 만들기

  13. 13

    컬러 매트릭스를 사용하여 파란색 채널 만 사용하여 컬러 비트 맵을 회색 음영 이미지로 변환

  14. 14

    컬러 매트릭스를 사용하여 파란색 채널 만 사용하여 컬러 비트 맵을 회색 음영 이미지로 변환

  15. 15

    백본에서 나머지 API를 사용하여 컬렉션 가져 오기

  16. 16

    tkinter에서 카운트 다운 타이머가 업데이트되지 않음

  17. 17

    Android Emulator에서 UI가 완전히 채워지지 않음

  18. 18

    Android Emulator에서 UI가 완전히 채워지지 않음

  19. 19

    사용자 지정 비트 맵 개체가 PictureBox에서 올바르게 표시되지 않습니다.

  20. 20

    3 가지 변수에 기반한 히트 맵

  21. 21

    $ .ajax가 컨트롤러에 부딪히지 않음

  22. 22

    Samba 서버가 네트워크에 나타나지 않음

  23. 23

    ASP.NET MVC 컨트롤러가 ModelView를 사용하여 PartialView에 올바른 값을 전달하지 않음

  24. 24

    스프레드 시트 데이터를 사용하는 Google 타임 맵 : 정보창이 닫히지 않음

  25. 25

    서브 플롯을 사용할 때 Seaborn 히트 맵 너비가 일치하지 않습니다.

  26. 26

    크기가 조정 된 이미지가 비트 맵에 올바르게 그려지지 않음

  27. 27

    Python : Tkinter를 사용할 때 스크립트가 종료되지 않음

  28. 28

    Ajax를 사용하면 MVC에서 제출시 텍스트 상자가 지워지지 않습니다.

  29. 29

    Python Seaborn 히트 맵 그리드-예상 열을 사용하지 않음

뜨겁다태그

보관