Python 如何在同一窗口中同时显示和更新两个matplotlib绘图?
我实现了一个GUI,它显示两个下拉菜单,您可以在其中选择要显示的两组不同的图形。但是,当我使用以下代码创建图形时:Python 如何在同一窗口中同时显示和更新两个matplotlib绘图?,python,matplotlib,Python,Matplotlib,我实现了一个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
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())
仅更新最后一个用“plt.”调用的绘图。如何编写代码以便可以引用两个图
我还尝试创建一个绘图,其中两个图形并排显示,但由于需要独立更新图形,我遇到了更多问题。如果你能做到这一点,那就太好了!我只是想解决前面的问题可能更简单
如果你需要更多的代码,我可以发布
#
#
解决方案(由于Beingernest和Ash Sharma的重要性):
用具体数字替换任何“plt.”
例如:
plt.tight_layout() #replace with self.comparison_figure1.tight_layout()
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)
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()的代码:
我可以发布更多的代码,如果你需要它 解决方案(感谢Beingernest和Ash Sharma的重要性):
用特定图形替换任何plt
例如:
plt.tight_layout() #replace with self.comparison_figure1.tight_layout()
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)
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)
尝试将绘图定义为图,ax,然后更新所需变量。?此链接:将matplotlib嵌入GUI时,最好不要使用
pyplot
。这迫使您思考实际使用的对象。在这种情况下,您需要对两个对象执行操作fig1
和fig2
,因此需要调用fig1.tight\u layout()
和fig2.tight\u layout()
。问题:以前的解决方案并没有解决所有打印更新问题。虽然在使用tight_layout()时,“plt”可以替换为self.comparison_figure1,但在使用cla()清除绘图时,不能执行同样的操作。使用cla()的代码:sns.set(style=“whitegrid”)plt.cla()ax=self.comparison\u figure2.add\u子图(111)。。。。。专业提示:没有人会看到隐藏在评论中的这个问题。改为问一个新问题,并链接到此问题以供参考。