diff --git a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib.py b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib.py index 85d853e8..37b62f6c 100644 --- a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib.py +++ b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib.py @@ -142,24 +142,34 @@ 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 -dictionary_of_figures = {'Axis Grid': create_axis_grid, - 'Subplot 3D': create_subplot_3d, - 'Scales' : create_pyplot_scales, - 'Basic Figure': create_figure} +# ----------------------------- 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} layout = [ [sg.T('Matplotlib Example', font='Any 20')], diff --git a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Browser.py b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Browser.py index 5c9716f6..355abdb2 100644 --- a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Browser.py +++ b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Browser.py @@ -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 diff --git a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple.py b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple.py index 10fde67d..adcda9db 100644 --- a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple.py +++ b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple.py @@ -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(): diff --git a/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple_PyPlot.py b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple_PyPlot.py new file mode 100644 index 00000000..2148b3e5 --- /dev/null +++ b/PySimpleGUIWeb/Demo Programs/Web_Matplotlib_Simple_PyPlot.py @@ -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()