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

2024-04-27 02:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我实现了一个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.U布局()例如)

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.”调用的绘图。如何编写代码以便可以引用两个绘图。你知道吗

我还尝试创建一个绘图,其中两个图形并排显示,但由于需要独立更新图形,我遇到了更多的问题。如果你能让它变成那样的话,那太好了!我只是想解决前面的问题可能更简单。你知道吗

如果你需要更多的代码,我可以张贴它!你知道吗

你知道吗# #你知道吗

解决方案(感谢ImportanceOfBeingErnest和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)

你知道吗# #你知道吗

问题:

以前的解决方案尚未修复所有绘图更新问题。虽然“plt”可以替换为自我比较\u图1当使用tight_layout()时,使用cla()清除绘图时无法执行相同的操作。你知道吗

使用cla()的代码:

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

我可以张贴更多的代码,如果你需要它!你知道吗


Tags: 代码selfevent图形绘图onpltcomparison
1条回答
网友
1楼 · 发布于 2024-04-27 02:39:51

解决方案(感谢ImportanceOfBeingErnest和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)

相关问题 更多 >