python - 如何保持 matplotlib 图形大于 tkinter 画布?
问题描述
一天中的好时光。
我正在制作一个与 matplotlib 一起使用的 Python tkinter GUI。问题是,我的图表相当大,所以我希望它可以在较小的画布上滚动。但是,由于某种原因,图形要么缩小到画布的大小,要么画布与图形的大小相匹配,这取决于我的尝试,但我找不到解决这个问题的方法。这是一个代码片段:
import tkinter as tk
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk
window=tk.Tk()
graphs=Figure(figsize=(6,12))
## The graphs I show here are random, I apologize if there are any mistakes
x=[1,2,3]; y=[1,4,9]
gr1 = graphs.add_subplot(311); rects = gr1.bar(x, y)
gr1.set_title('Title 1')
gr2= graphs.add_subplot(312); rects = gr2.bar(x,y)
gr2.set_title('Title 2')
gr3= graphs.add_subplot(313); rects = gr3.bar(x, y)
gr3.set_title('Title 3')
graphs.tight_layout()
frame3=tk.Frame(master=window)
tool=tk.Frame(master=window)
canv=tk.Frame(master=window,height=288)
canvas = FigureCanvasTkAgg(graphs, master=canv)
canvas.draw()
vbar=tk.Scrollbar(master=canv, orient = 'vertical'); vbar.pack(side='right',fill='y')
vbar["command"] = canvas.get_tk_widget().yview
canvas.get_tk_widget().config(yscrollcommand=vbar.set,scrollregion=(0,0,432,864))
canvas.get_tk_widget().update()
canvas.get_tk_widget().pack(fill='x')
toolbar = NavigationToolbar2Tk(canvas, tool)
toolbar.update(); toolbar.pack()
canv.grid(row=0,sticky='NESW')
tool.grid(row=1)
frame3.grid(row=2)
window.mainloop()
我尝试将高度设置为canvas.get_tk_widget().config
并添加/删除canvas.draw()
or canvas.get_tk_widget().update()
,但似乎没有任何效果。在这一点上,我变得非常绝望。我已经阅读了一些关于 的资源canvas.configure(scrollregion = canvas.bbox("all"))
,但它似乎拒绝使用 get_tk_widgets。如果有任何帮助,我将不胜感激。
解决方案
推荐阅读
- java - gradle 5中的sourcesJar任务
- excel - 在excel vba中的行上循环
- ignite - Ignite 过期策略不适用于旧数据
- android - .setText 如何从控制器数据类中获取数据
- amazon-web-services - 如何通过 S3 事件或 AWS Lambda 触发 Glue ETL Pyspark 作业?
- javascript - POST 方法后,Chrome 中的 Javascript window.location.href 不起作用
- react-native - 'android/app/build/outputs/apk/debug/app-debug.apk' 中的应用程序不存在或无法访问
- javascript - 为什么我不能将 weekstart 设置为星期一?
- python - 如何将 json 对象数组内的列表中的 dict 转换为数据框?
- ios - IOS swift的谷歌地图中的折线