Python 在初始调用后重新调用matplotlib图

Python 在初始调用后重新调用matplotlib图,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我有一个Tkinter GUI,它创建预算计算器并存储事务。GUI上的一个按钮是调用脚本,该脚本从事务数据创建图表 我第一次单击按钮时,图形打开得很好。如果我再次尝试单击按钮,会出现一个空白数字。我相信这是我最初的 plt.show() 在我画图表的地方打电话。以前有人遇到过这样的问题吗 GUI代码: ViewCharts = Button(win,text = 'View Spending Charts') ViewCharts.grid(row = 21,column = 1) def

我有一个Tkinter GUI,它创建预算计算器并存储事务。GUI上的一个按钮是调用脚本,该脚本从事务数据创建图表

我第一次单击按钮时,图形打开得很好。如果我再次尝试单击按钮,会出现一个空白数字。我相信这是我最初的

plt.show()
在我画图表的地方打电话。以前有人遇到过这样的问题吗

GUI代码:

ViewCharts = Button(win,text = 'View Spending Charts')
ViewCharts.grid(row = 21,column = 1)

def view_charts():
    Graphs.plot_charts()

ViewCharts.configure(command = view_charts)
图表代码:

global fig
fig = plt.figure(figsize=(12, 9))
fig.subplots_adjust(hspace=.5)
global ax1
ax1 = fig.add_subplot(1,2,1)
global ax2
ax2 = fig.add_subplot(1,2,2)


def plot_charts():
    category_bar_chart()
    category_pie_chart()
    fig = plt.show()
其中,category_bar_chart()和category_pie_chart()只是将绘图添加到ax1和ax2中的函数


非常感谢您的任何帮助或建议!我正在Mac/PC上使用Python3,具体取决于一天中的时间。谢谢

问题是,当您执行
fig=plt.show()
时,您正在重新定义
fig
,因此在第一次调用后,您不再将绘图存储在任何位置。只需执行
plt.show()

这段代码到底是如何工作的还不清楚。第一部分紧接着第二部分吗?老实说,我有一种感觉会让人困惑,但希望有人能认识到这个问题。这两个段位于两个单独的脚本中,matplotlib绘图来自一个脚本Graphs.py。整个过程是几百行代码,我不确定如何从中提取片段。遇到这样的问题时,我的想法是生成一个。也就是说,您创建了一个大约20行长的代码,它显示了相同的行为,从而再现了问题。但是,这里的问题似乎是,使用
plt.show()
;不可能多次显示图形;在它被展示之后,可以说它已经消失了。一个可能的解决方案是在每次单击按钮时重新创建图形。