当前位置: 首页 > 知识库问答 >
问题:

如何在同一窗口中同时显示和更新两个matplotlib图?

卢志行
2023-03-14

我实现了一个GUI,它显示两个下拉菜单,您可以在其中选择要显示的两组不同的图形。但是,当我使用以下代码创建图形时:

import matplotlib.pyplot as plt
from matplotlib.backends.backedn_qt4agg import FigureCanvasQTAgg as FigureCanvas


self.comparison_figure1 = plt.figure(figsize=(15,5))
self.comparison_canvas1 = FigureCanvas(self.comparison_figure1)

self.comparison_figure2 = plt.figure(figsize=15,5))
self.comparison_canvas2 = FigureCanvas(self.comparison_figure2)

然后我尝试更新情节(例如plt.tight_layout)

def on_resize(event):
    plt.tight_layout()
    self.comparison_canvas2.draw()
    self.comparison_canvas1.draw()   #this would do nothing 
cid = self.comparison_canvas2.mpl_connect('resize_event', on_resize)

只有最后一个用“plt”调用的情节被更新。我如何编写我的代码,以便我可以引用两个图。

我还试图创建一个图,其中两个图形并排显示,但由于需要独立更新图形,我遇到了更多的问题。如果你能让它这样工作,太好了!我只是在想,修复之前的问题可能更简单。

如果你需要更多的代码,我可以发布!

# #

解决方案(由于Beingernest和Ash Sharma的重要性):

替换任何“plt”具体数字

例如:

plt.tight_layout()      #replace with self.comparison_figure1.tight_layout()

这是一些固定的代码:

def on_resize(event):
    self.comparison_figure1.tight_layout()
    self.comparison_figure2.tight_layout()
    self.comparison_canvas1.draw()
    self.comparison_canvas2.draw()
cid = self.comparison_canvas2.mpl_connect('resize_event', on_resize)

# #

问题:

以前的解决方案没有修复所有的绘图更新问题。虽然当使用tight_layout()时,plt可以替换为self.comparison_figure1,但是当使用cla()清除情节时,不能这样做。

使用cla()的代码:

sns.set(style="whitegrid")
plt.cla()
ax = self.comparison_figure2.add_subplot(111)
.....
.....

如果你需要,我可以发布更多的代码!

共有1个答案

应和悦
2023-03-14

解决方案(由于Beingernest和Ash Sharma的重要性):

用特定的图形替换任何plt

例如:

plt.tight_layout()      #replace with self.comparison_figure1.tight_layout()

这是一些固定的代码

def on_resize(event):
    self.comparison_figure1.tight_layout()
    self.comparison_figure2.tight_layout()
    self.comparison_canvas1.draw()
    self.comparison_canvas2.draw()
cid = self.comparison_canvas2.mpl_connect('resize_event', on_resize)
 类似资料:
  • 在Android中,我需要将第二个页面滑动到另一个页面上。 布局1覆盖页面左侧的80%。布局2显示其余的20%。往右走。 然后我需要拖动/滑动布局2在布局1的顶部,并将其滑回。

  • 本文向大家介绍Python 多个图同时在不同窗口显示的实现方法,包括了Python 多个图同时在不同窗口显示的实现方法的使用技巧和注意事项,需要的朋友参考一下 Python的matplotlib包可以轻松的将数据可视化,博主最近遇到了一个问题,博主想同时在两个窗口展示两张图,但是代码运行结果总是显示一张图,把当前的图删掉之后才能显示另一张图。网上找了一些解决方案都是把它们放在一个窗口中,两个图片分

  • 我正在开发一个小型应用程序,我需要同时向用户显示两个窗口,但全屏显示(该应用程序将在双屏上为用户制作)。 我在NetBeans 8.0.1上使用JavaFx场景构建器2.0 我尝试了这个,但只有第二个窗口全屏显示。 可以全屏显示两个窗口吗? 非常感谢。

  • 我正在使用Pygame模块制作一个简单的游戏。我需要Tkinter窗口与Pygame窗口一起打开。 每当我试图打开两个窗口时,第二个窗口只有在我杀死第一个窗口后才会打开。 现在,我能想到的唯一解决方案是使用多线程。但是,我无法实现它。 我该怎么做呢?我真的很感激这里的帮助。谢谢你!

  • 问题内容: 我想知道是否有人想知道为什么在按下GUI上的按钮后,下面的代码为什么不显示带有线的图形。我想创建一个程序,该程序在通过单击按钮导入一组数据后执行一长串命令。这些命令之一将是在同一窗口内的图形上显示光谱数据。这是我到目前为止的内容: 问题答案: 那是因为xaxis和yaxis的范围不会更改为新数据的范围,因此请更改您的refreshFigure,如下所示:

  • 问题内容: 我刚开始使用PyQt5。我一直在尝试完成一个看似非常简单的任务,但没有获得足够的信息。经过大量的谷歌搜索,我已经能够关闭一个窗口,并在另一个UI加载时启动另一个窗口,但这不是我要在这里做的。 我想在同一窗口中切换UI。我正在将UI文件作为全局变量加载到我的python文件中,其中每个UI有2个类。当我单击一个UI中的特定按钮时,我想切换到同一窗口中的另一个UI。下面是代码示例: 问题答