python - Python-在Tkinter中的同一帧中绘制多个图
问题描述
我正在构建一个 GUI,其中某些模型的值将在单击按钮时显示图形。到目前为止,它适用于一个图表,但是当我尝试绘制第二个图表时,它们都被绘制但合并了。我希望它们在一帧内单独显示。现在,我正在使用 tkinter 画布进行绘图。这是我到目前为止所做的-
f = Figure(figsize=(3,3), dpi=100)
def graph1():
a = f.add_subplot(111)
a.plot([1, 2, 3, 4], [1, 4, 9, 16])
canvas = FigureCanvasTkAgg(f, self.RightFrame)
canvas.get_tk_widget().pack(side=LEFT)
canvas._tkcanvas.pack(side=LEFT)
def graph2():
a = f.add_subplot(121)
a.plot([6, 9, 12, 15], [20, 25, 30, 35])
canvas = FigureCanvasTkAgg(f, self.RightFrame)
canvas.get_tk_widget().pack(side=LEFT)
canvas._tkcanvas.pack(side=LEFT)
Button(self.RightFrame,text='Show Graph1',command=graph1).pack(side=TOP)
Button(self.RightFrame,text='Show Graph2',command=graph2).pack(side=TOP)
框架的代码如下 -
self.RightFrame = Frame(Tab1)
self.RightFrame.place(relx=0.165, rely=0.066, relheight=0.83, relwidth=0.842)
self.RightFrame.configure(relief='groove')
self.RightFrame.configure(borderwidth="2")
而不是 pack(),我尝试使用网格和位置,但仍然没有。我想绘制至少 4 个图表。我在这里做错了什么/错过了什么?谢谢
PS我暂时使用样本值进行基本绘图。
解决方案
好的,我找到了一种做情节的方法。我为每个图表使用单独的数字。但还不能对齐每个数字下的导航工具栏。
def graph1():
f = Figure(figsize=(3,3), dpi=100)
a = f.add_subplot(111)
a.plot([1, 2, 3, 4], [1, 4, 9, 16])
canvas = FigureCanvasTkAgg(f, self.RightFrame)
canvas.get_tk_widget().place(relx=0.010,rely=0.100)
toolbar = NavigationToolbar2Tk(canvas, self.RightFrame)
toolbar.update()
canvas._tkcanvas.place(relx=0.001,rely=0.100)
def graph2():
f2 = Figure(figsize=(3,3), dpi=100)
a = f2.add_subplot(111)
a.plot([6, 9, 12, 15], [20, 25, 30, 35])
canvas = FigureCanvasTkAgg(f2, self.RightFrame)
canvas.get_tk_widget().place(relx=0.310,rely=0.100)
toolbar = NavigationToolbar2Tk(canvas, self.RightFrame)
toolbar.update()
canvas._tkcanvas.place(relx=0.310,rely=0.100)
推荐阅读
- java - 将 Json 有效负载转换为 java 对象
- java - 如何在不同于“应用程序”和“活动”的扩展中实现全局变量?
- html - 根据父元素(SASS)的宽度在SASS中设置子元素的背景颜色
- python - numpy 2D @ 1D matmul 结果中的问题
- kubernetes - 如何为 Kubernetes 中的节点模拟 nodeNotReady
- javascript - 如何获取我已经上传的文件,我想删除它并使用引导文件输入替换它
- python - 使用 selenium:如何在使用 python 关闭驱动程序后保持登录状态
- json - 连接嵌套字段
- plsql - 从分号分隔的字符串中获取不同的电子邮件
- java - 将拥有自己数据库的我的模块集成到另一个应用程序中