mirror of
https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques.git
synced 2024-01-27 06:56:18 +01:00
78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
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 <philippe.roy@ac-grenoble.fr>
|
|
# @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()
|