import sys import csv # Creating/parsing CSV file import xml.etree.ElementTree as ET # Creating/parsing XML file from twin_plot import plot_config_get_dict, plot_config_get, plot_config_get_enable, plot_nb, csv_read, plots_static # Gestion communes des graphiques (Qt, wx) import wx # GUI wxPython import matplotlib # Grapheur Matplotlib from matplotlib.figure import Figure from matplotlib.backends.backend_wxagg import (FigureCanvasWxAgg as FigureCanvas, NavigationToolbar2WxAgg as NavigationToolbar) ############################################################################### # twin_plot_wx.py # @title: Visualisation des données (wxPython + Matplotlib) # @project: Blender-EduTech # @lang: fr # @authors: Philippe Roy # @copyright: Copyright (C) 2023 Philippe Roy # @license: GNU GPL ############################################################################### plot_config={} ############################################################################### # Zone de dessin ############################################################################### class CanvasFrame(wx.Frame): def __init__(self): super().__init__(None, -1, 'Visualisation des données') # Création des zones graphique (Plots) self.figure = Figure() if plot_nb(plot_config) ==1: # plot_nb() : nombre de graphiques plt = self.figure.subplots() # plot_nb() : nombre de graphiques else: plt = self.figure.subplots(plot_nb(plot_config), 1, sharex=True) # plot_nb() : nombre de graphiques self.canvas = FigureCanvas(self, -1, self.figure) # Remplissage des graphiques à partir du fichier CSV fields, xdata, ydata = csv_read(sys.argv[1]) plots_static(plt, fields, xdata, ydata, plot_config, sys.argv[1]) self.canvas.draw() # Implantation de la fenêtre (canvas) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.canvas, 1, wx.TOP | wx.LEFT | wx.EXPAND) self.add_toolbar() self.SetSizer(self.sizer) self.Fit() # Barre d'outils def add_toolbar(self): self.toolbar = NavigationToolbar(self.canvas) self.toolbar.Realize() self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND) self.toolbar.update() ############################################################################### # Application ############################################################################### class App(wx.App): def OnInit(self): frame = CanvasFrame() frame.Show(True) return True if __name__ == "__main__": # Configuration des plots plot_config=plot_config_get_dict() # Fenêtre app = App() app.MainLoop() # StaticPlot()