python - Python:如何使带有子图的 Matplotlib 图形扩展以填充其上的整个 FigureCanvasTkAgg?
问题描述
我正在制作一个 Tkinter GUI,我正在尝试为它获取视觉效果。我想在滚动画布上绘制一些 seaborn 图表,以便可以正确调整图表的大小。我使用 matplotlib.pyplot.subplots 制作了一个图形和一个轴列表,然后将它放在一个我附加两个滚动条的 FigureCanvasTkAgg 上。我可以在整个画布上滚动,但图形仍保留在画布的一小部分。
如何让图形占据画布的整个区域,然后滚动到不同的部分?
基本上我希望在这里实现输出:Matplotlib 上的滚动条显示页面
但不是使用 Tkinter 的 PyQt。
import sys
import tkinter as tk
from tkinter import ttk
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
matplotlib.use("TkAgg")
from matplotlib import style
style.use("ggplot")
plt.rcParams.update({'font.size': 12})
root = tk.Tk()
# frame = ttk.Frame(root)
# frame.pack(expand = True)
combMapFig, combMapAxes = plt.subplots(nrows = 5, ncols = 10, figsize = (100,100), dpi = 100)
# axes_list = axes.flatten()
# axes_list = axes_list.tolist()
combMapAxes = combMapAxes.tolist()
# plt.gca().set_position([0,0,1,1])
mapCanvas = FigureCanvasTkAgg(combMapFig, root)
mapCanvas.draw()
mapXScroll = tk.Scrollbar(root, orient = 'horizontal')
mapXScroll.config(command = mapCanvas.get_tk_widget().xview)
mapXScroll.pack(side = tk.BOTTOM, fill = tk.X, expand = tk.FALSE)
mapYScroll = tk.Scrollbar(root)
mapYScroll.config(command = mapCanvas.get_tk_widget().yview)
mapYScroll.pack(side = tk.RIGHT, fill = tk.Y, expand = tk.FALSE)
mapCanvas.get_tk_widget().config(yscrollcommand = mapYScroll.set)
mapCanvas.get_tk_widget().config(xscrollcommand = mapXScroll.set)
# mapCanvas.get_tk_widget().config(scrollregion = mapCanvas.get_tk_widget().bbox("all"))
mapCanvas.get_tk_widget().config(width = 500, height = 500)
mapCanvas.get_tk_widget().config(scrollregion = (0,0, 5000,5000))
mapCanvas.get_tk_widget().pack(side = tk.LEFT, expand = True, fill = tk.BOTH)
mapCanvas._tkcanvas.pack(side = tk.LEFT, expand = True, fill = tk.BOTH)
root.rowconfigure(0, weight = 1)
root.columnconfigure(0, weight = 1)
try:
root.mainloop()
except KeyboardInterrupt as e:
sys.exit("Keyboard Interrupt. Program Closed")
电流输出
图形应扩展到的空白画布
谢谢
解决方案
推荐阅读
- gradle - 将“出了什么问题”Gradle 错误消息传递给 Azure Pipelines 中的另一个作业
- swiftui - 在 Swiftui 的 Text() 中自动调整字体大小?
- kubernetes - 从另一个容器复制 Kubernetes pod 内的文件
- java - 删除包含某些字符的数组列表中的所有字符串
- python - Tkinter 询问线程内的字符串
- docker - Traefik 已启动,但我的服务未使用它
- java - 子实体中多对多关系的堆栈溢出异常
- heroku - 如果请求是从 Heroku 上托管的 Telethon 代码发送的,则 Telegram 不会发送授权代码
- javascript - 如何在函数表达式中包装 Javascript 函数?
- html - 带有主体背景 SVG 纹理的 CSS 形状分波器