New Matplotlib Demo Programs for PySimpleGUIWeb

This commit is contained in:
PySimpleGUI 2020-07-06 16:25:00 -04:00
parent 9435bb6393
commit 97061b3614
4 changed files with 78 additions and 14 deletions

View File

@ -142,25 +142,35 @@ def create_pyplot_scales():
wspace=0.35)
return plt.gcf()
# ----------------------------- The draw figure helpful function -----------------------------
def draw_figure(fig, element):
"""
Draws the previously created "figure" in the supplied Image Element
:param fig: a Matplotlib figure
:param element: an Image Element
:return: The figure canvas
"""
plt.close('all') # erases previously drawn plots
canv = FigureCanvasAgg(fig)
buf = io.BytesIO()
canv.print_figure(buf, format='png')
if buf is None:
return None
buf.seek(0)
data = buf.read()
element.update(data=data)
element.update(data=buf.read())
return canv
# ----------------------------- The GUI Section -----------------------------
def main():
dictionary_of_figures = {'Axis Grid': create_axis_grid,
'Subplot 3D': create_subplot_3d,
'Scales': create_pyplot_scales,
'Basic Figure': create_figure}
def main():
layout = [
[sg.T('Matplotlib Example', font='Any 20')],
[sg.Listbox(dictionary_of_figures.keys(), size=(15, 5), key='-LB-'), sg.Image(key='-IMAGE-')],

View File

@ -846,16 +846,15 @@ def draw_figure(fig, element):
:param element: an Image Element
:return: The figure canvas
"""
plt.close('all')
plt.close('all') # erases previously drawn plots
canv = FigureCanvasAgg(fig)
buf = io.BytesIO()
canv.print_figure(buf, format='png')
if buf is None:
return None
buf.seek(0)
data = buf.read()
element.update(data=data)
element.update(data=buf.read())
return canv

View File

@ -2,6 +2,7 @@ import PySimpleGUIWeb as sg
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasAgg
import matplotlib.figure
import matplotlib.pyplot as plt
import io
@ -15,15 +16,24 @@ def create_figure():
def draw_figure(fig, element):
"""
Draws the previously created "figure" in the supplied Image Element
:param fig: a Matplotlib figure
:param element: an Image Element
:return: The figure canvas
"""
plt.close('all') # erases previously drawn plots
canv = FigureCanvasAgg(fig)
buf = io.BytesIO()
canv.print_figure(buf, format='png')
if buf is None:
return None
buf.seek(0)
data = buf.read()
element.update(data=data)
element.update(data=buf.read())
return canv
def main():

View File

@ -0,0 +1,45 @@
import PySimpleGUIWeb as sg
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasAgg
import matplotlib.pyplot as plt
import io
def draw_figure(fig, element):
"""
Draws the previously created "figure" in the supplied Image Element
:param fig: a Matplotlib figure
:param element: an Image Element
:return: The figure canvas
"""
plt.close('all') # erases previously drawn plots
canv = FigureCanvasAgg(fig)
buf = io.BytesIO()
canv.print_figure(buf, format='png')
if buf is None:
return None
buf.seek(0)
element.update(data=buf.read())
return canv
def main():
layout = [[sg.Text('Matplotlib Simple Plot', font='Any 20')],
[sg.Image(key='-IMAGE-')],
[sg.Button('Exit')]]
window = sg.Window('Matplotlib Example', layout, finalize=True)
fig = plt.figure()
x = np.arange(0, 5, 0.1)
y = np.sin(x)
plt.plot(x, y)
draw_figure(fig, window['-IMAGE-'])
window.read(close=True)
if __name__ == "__main__":
main()