Matplotlib嵌入PySimpleGUI
时间: 2023-05-27 17:07:39 浏览: 129
【Pyside资源】 Pyside2 中嵌入 Matplotlib 实现画图功能
Matplotlib可以与PySimpleGUI一起使用,以创建交互式的数据可视化应用程序。
下面是一个简单的例子,演示如何使用Matplotlib和PySimpleGUI创建一个简单的折线图应用程序:
```python
import PySimpleGUI as sg
import matplotlib.pyplot as plt
import numpy as np
# 定义GUI布局
layout = [[sg.Text('Enter x and y values:')],
[sg.Text('x:', size=(5, 1)), sg.Input(key='x')],
[sg.Text('y:', size=(5, 1)), sg.Input(key='y')],
[sg.Button('Plot'), sg.Button('Exit')]]
# 创建窗口
window = sg.Window('Plot Graph', layout)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED or event == 'Exit':
break
elif event == 'Plot':
# 获取输入值
x_str = values['x']
y_str = values['y']
# 将输入值转换为numpy数组
x = np.array([float(i) for i in x_str.split(',')])
y = np.array([float(i) for i in y_str.split(',')])
# 创建Matplotlib图形
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot Graph')
# 显示Matplotlib图形,并将其嵌入PySimpleGUI窗口
fig_canvas_agg = None
if fig_canvas_agg is not None:
fig_canvas_agg.get_tk_widget().pack_forget()
fig_canvas_agg = plt.gcf().canvas
fig_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)
# 关闭窗口
window.close()
```
在这个例子中,我们首先定义一个简单的GUI布局,包括两个输入框和两个按钮。当用户单击“绘图”按钮时,我们获取输入值,并使用Matplotlib创建一个折线图。然后,我们使用Matplotlib的TkAgg后端将图形嵌入到PySimpleGUI窗口中,并显示窗口。
注意,我们使用了一个名为“fig_canvas_agg”的变量来存储Matplotlib图形的引用。这是因为每次单击“绘图”按钮时,我们都需要删除旧的图形并显示新的图形。如果我们不保存对图形的引用,我们将无法删除旧的图形。
使用Matplotlib和PySimpleGUI创建交互式的数据可视化应用程序非常简单,只需要几行代码即可完成。如果您想要尝试更高级的数据可视化,Matplotlib提供了许多强大的绘图工具和选项,可以帮助您创建复杂的图形。
阅读全文