#!/usr/bin/env pythonfrom matplotlib.ticker import NullFormatter # useful for `logit` scaleimport matplotlib.pyplot as pltimport numpy as npfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggimport PySimpleGUI as sgimport matplotlibmatplotlib.use('TkAgg')"""Demonstrates one way of embedding Matplotlib figures into a PySimpleGUI window.Basic steps are:* Create a Canvas Element* Layout form* Display form (NON BLOCKING)* Draw plots onto convas* Display form (BLOCKING)Based on information from: https://matplotlib.org/3.1.0/gallery/user_interfaces/embedding_in_tk_sgskip.html(Thank you Em-Bo & dirck)"""# ------------------------------- PASTE YOUR MATPLOTLIB CODE HERE -------------------------------# Fixing random state for reproducibilitynp.random.seed(19680801)# make up some data in the interval ]0, 1[y = np.random.normal(loc=0.5, scale=0.4, size=1000)y = y[(y > 0) & (y < 1)]y.sort()x = np.arange(len(y))# plot with various axes scalesplt.figure(1)# linearplt.subplot(221)plt.plot(x, y)plt.yscale('linear')plt.title('linear')plt.grid(True)# logplt.subplot(222)plt.plot(x, y)plt.yscale('log')plt.title('log')plt.grid(True)# symmetric logplt.subplot(223)plt.plot(x, y - y.mean())plt.yscale('symlog', linthreshy=0.01)plt.title('symlog')plt.grid(True)# logitplt.subplot(224)plt.plot(x, y)plt.yscale('logit')plt.title('logit')plt.grid(True)plt.gca().yaxis.set_minor_formatter(NullFormatter())plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25,wspace=0.35)fig = plt.gcf() # if using Pyplot then get the figure from the plotfigure_x, figure_y, figure_w, figure_h = fig.bbox.bounds# ------------------------------- END OF YOUR MATPLOTLIB CODE -------------------------------# ------------------------------- Beginning of Matplotlib helper code -----------------------def draw_figure(canvas, figure, loc=(0, 0)):figure_canvas_agg = FigureCanvasTkAgg(figure, canvas)figure_canvas_agg.draw()figure_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)return figure_canvas_agg# ------------------------------- Beginning of GUI CODE -------------------------------# define the window layoutlayout = [[sg.Text('Plot test', font='Any 18')],[sg.Canvas(size=(figure_w, figure_h), key='canvas')],[sg.OK(pad=((figure_w / 2, 0), 3), size=(4, 2))]]# create the form and show it without the plotwindow = sg.Window('Demo Application - Embedding Matplotlib In PySimpleGUI',layout, finalize=True)# add the plot to the windowfig_canvas_agg = draw_figure(window['canvas'].TKCanvas, fig)event, values = window.read()window.close()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。