我已经实现了一个显示两个下拉菜单的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()时可以用self.comparison_figure1替换“ plt”,但是在使用cla()清除图时,则无法完成此操作。
我在使用cla()的代码:
sns.set(style="whitegrid")
plt.cla()
ax = self.comparison_figure2.add_subplot(111)
.....
.....
如果需要,我可以发布更多代码!
答案 0 :(得分:1)
解决方案(感谢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)