source: soft/giet_vm/applications/rosenfeld/scripts/stack.py @ 827

Last change on this file since 827 was 822, checked in by meunier, 9 years ago

In rosenfeld:

  • Updated nrio0, nrio1, nrio2, nrio1f, nrio2f, nrio1x, nrbool1, nrbool2 and nralloc1 in the nrc2 lib in order to use macro-typed functions
  • Updated the simulation script to include performance evaluation with random images, and a script to generate graphs
  • Updated the clock.h to use 64-bit integers, which potentially breaks the printing on the giet
File size: 3.7 KB
Line 
1#!/dsk/l1/misc/meunier/tools/bin/python3
2# -*- coding: utf-8 -*-
3
4import matplotlib
5matplotlib.use('PDF')
6import matplotlib.pyplot as plt
7from matplotlib.ticker import MultipleLocator
8
9class Stack:
10    def __init__(self, couleurs, title, label_X, label_Y):
11        self.xlabel = label_X
12        self.ylabel = label_Y
13        self.title = title
14        self.couleurs = couleurs
15        self.actual_colors = []
16        self.color_index = 0
17        self.dataset = []
18        self.X = []
19        #self.clear()
20        self.init_picture()
21
22    def add_y(self, data):
23        self.dataset.append(data)
24        self.actual_colors.append(self.couleurs[self.get_color()])
25
26    def add_x(self, data):
27        self.X = data
28
29
30    def init_picture(self):
31        plt.clf() # Clear previous figure
32        textcolor = '#000000'
33        plt.rcParams['font.family'] = 'serif'
34        plt.rcParams['font.size'] = 10
35
36        plt.rcParams['mathtext.fontset'] = 'cm'
37        plt.rcParams['mathtext.fallback_to_cm'] = True
38        plt.rcParams['mathtext.default'] = 'regular'
39        plt.rcParams['mathtext.default'] = 'sf'
40       
41        plt.rcParams['lines.linewidth'] = '1'
42        plt.rcParams['lines.antialiased'] = True
43
44        plt.rcParams['text.latex.unicode'] = True
45        plt.rcParams['text.color'] = textcolor
46        plt.rcParams['text.hinting'] = 'auto'
47        plt.rcParams['axes.labelcolor'] = textcolor
48        plt.rcParams['axes.edgecolor'] = textcolor # couleur du cadre
49        plt.rcParams['axes.facecolor'] = '#FFFFFF' # couleur du fond
50        plt.rcParams['axes.linewidth'] = '0.1'
51        #plt.rcParams['ytick.major.pad'] = 8
52
53        plt.rcParams['grid.color'] = textcolor
54        plt.rcParams['grid.alpha'] = '0.1'
55        plt.rcParams['grid.linestyle'] = ':'
56        plt.rcParams['grid.linewidth'] = '0.1'
57        plt.rcParams['xtick.direction'] = 'in'
58        plt.rcParams['ytick.direction'] = 'in'
59        plt.rcParams['xtick.color'] = textcolor
60        plt.rcParams['ytick.color'] = textcolor
61        plt.rcParams['xtick.major.size'] = 6
62        plt.rcParams['ytick.major.size'] = 6
63        plt.rcParams['xtick.minor.size'] = 3
64        plt.rcParams['ytick.minor.size'] = 3
65        plt.rcParams['legend.fancybox'] = True
66        plt.rcParams['xtick.major.pad'] = 4
67        plt.rcParams['ytick.major.pad'] = 12
68        plt.rcParams['figure.figsize'] = 7,4
69       
70        axes = plt.gca()
71        axes.set_xlim([0, 100])
72        plt.axes().xaxis.set_tick_params(width = 0.1)
73        plt.axes().yaxis.set_tick_params(width = 0.1)
74       
75        plt.grid(True)
76        self.draw_labels()
77
78
79    def draw_labels(self):
80        plt.xlabel(self.xlabel)
81        plt.ylabel(self.ylabel)
82        pass
83
84    def draw_title(self):
85        plt.title(self.title)
86        pass
87
88    def plot(self):
89        plt.stackplot(self.X, self.dataset, colors = self.actual_colors)
90
91    def save(self, filename):
92        plt.savefig(filename, bbox_inches = 'tight')
93
94    def get_color(self):
95        color_index = self.color_index
96        self.color_index = (self.color_index + 1) % len(self.couleurs)
97        return color_index
98
99    def clear(self):
100        # Other options to explore
101        #plt.clf()
102        #self.color_index = 0
103        #yminorLocator   = MultipleLocator(5)
104        #xmajorLocator   = MultipleLocator(10)
105        #xminorLocator   = MultipleLocator(1)
106
107        #plt.axes().yaxis.set_minor_locator(yminorLocator)
108        #plt.axes().yaxis.set_label_position('left')
109        #plt.axes().xaxis.set_minor_locator(xminorLocator)
110        #plt.axes().xaxis.set_major_locator(xmajorLocator)
111        #ylabel = plt.axes().yaxis.get_label()
112        #ylabel.set_va('baseline')
113        #ylabel.set_ha('center')
114        #plt.grid(True)
115        #self.draw_labels()
116        #self.draw_title()   
117        pass
Note: See TracBrowser for help on using the repository browser.