MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
magic_plot.cpp
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// magic_plot.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "magic_plot.h"
23 #include <sys/types.h>
24 #include <unistd.h>
25 
26 
27 
29 {
31 tenseur_titre="Titre";
35 tenseur_format1="%.4e";
36 tenseur_format2="%.4e";
37 tenseur_nom_fichier_eps="tenseur.eps";
38 
40 std::string histogramme_titre="Titre";
41 std::string histogramme_nom_fichier_eps="histogramme.eps";
42 std::string histogramme_axeX_nom="Nom axe x";
43 std::string histogramme_axeY_nom="Nom axe y";
44 }
45 
47 {
48 }
49 
50 void MAGIC_PLOT::plot_tenseur(int num,OT_TENSEUR tens1,OT_TENSEUR tens2,std::string output,bool aveccouleur)
51 {
52 plot_script_tenseur(num,tens1,tens2,output,aveccouleur);
53 char chaine[500];
54 sprintf(chaine,"gnuplot -p %s",output.c_str());
55 if (fork()==0) {system(chaine);exit(0);}
56 
57 
58 }
59 
60 void MAGIC_PLOT::plot_script_tenseur(int num,OT_TENSEUR tens1,OT_TENSEUR tens2,std::string output,bool aveccouleur)
61 {
62 FILE *out=fopen(output.c_str(),"wt");
63 int n=tens1.Get_NbRows();
64 int m=tens1.Get_NbCols();
65 
66 fprintf(out,"$data_moyenne << EOD\n");
67 for (int i=0;i<n;i++)
68  {
69  for (int j=0;j<m;j++)
70  fprintf(out,"%e ",tens1(i,j).get_x());
71  fprintf(out,"\n");
72  }
73 fprintf(out,"EOD\n");
74 if (num==2)
75 {
76 fprintf(out,"$data_ecart_type << EOD\n");
77 for (int i=0;i<n;i++)
78  {
79  for (int j=0;j<m;j++)
80  fprintf(out,"%e ",tens2(i,j).get_x());
81  fprintf(out,"\n");
82  }
83 fprintf(out,"EOD\n");
84 }
85 
86 fprintf(out,"#set terminal postscript eps size 3.0,2.00 enhanced color\n");
87 fprintf(out,"#set output %s\n",tenseur_nom_fichier_eps.c_str());
88 
89 fprintf(out,"set title \"%s\" font ',14'\n",tenseur_titre.c_str());
90 fprintf(out,"unset key\n");
91 fprintf(out,"set border linewidth 2\n");
92 if (!aveccouleur) fprintf(out,"set palette rgbformula 2,2,2\n");
93 else
94  {
95  if (tenseur_couleur==VERT) fprintf(out,"set palette rgbformula -3,2,-3\n");
96  if (tenseur_couleur==ROUGE) fprintf(out,"set palette rgbformula 2,-3,-3\n");
97  if (tenseur_couleur==BLEU) fprintf(out,"set palette rgbformula -3,-3,2\n");
98  if (tenseur_couleur==JAUNE) fprintf(out,"set palette rgbformula 2,2,-3\n");
99  if (tenseur_couleur==VIOLET) fprintf(out,"set palette rgbformula 2,-3,2\n");
100  if (tenseur_couleur==GRIS) fprintf(out,"set palette rgbformula -8,-8,-8\n");
101 
102  }
103 
104 
105 fprintf(out,"unset xtics\n");
106 fprintf(out,"unset ytics\n");
107 if (aveccouleur)
108  {
109  if ((tenseur_maxbarcouleur<1e300) && (tenseur_minbarcouleur>-1e300)) fprintf(out,"set cbrange [%lf:%lf]\n",tenseur_minbarcouleur,tenseur_maxbarcouleur);
110  if ((tenseur_maxbarcouleur>1e300) && (tenseur_minbarcouleur<-1e300)) fprintf(out,"set cbrange []\n");
111  if ((tenseur_maxbarcouleur<1e300) && (tenseur_minbarcouleur<-1e300)) fprintf(out,"set cbrange [:%lf]\n",tenseur_maxbarcouleur);
112  if ((tenseur_maxbarcouleur>1e300) && (tenseur_minbarcouleur>-1e300)) fprintf(out,"set cbrange [%lf:]\n",tenseur_minbarcouleur);
113 
114  fprintf(out,"set cblabel \"%s\"\n",tenseur_titrebarcouleur.c_str());
115  }
116 else fprintf(out,"unset colorbox\n");
117 
118 fprintf(out,"set xrange []\n");
119 fprintf(out,"set yrange [] reverse\n");
120 
121 for (int i=1;i<n;i++)
122  fprintf(out,"set arrow from -0.5,%d.5 to %d.5,%d.5 nohead front lc rgb 'black' lw 1\n",i-1,m-1,i-1);
123 
124 for (int j=1;j<m;j++)
125  fprintf(out,"set arrow from %d.5,-0.5 to %d.5,%d.5 nohead front lc rgb 'black' lw 1\n",j-1,j-1,n-1);
126 
127 fprintf(out,"plot '$data_moyenne' matrix with image,\\\n");
128 if (num==2)
129  {
130  fprintf(out,"'$data_moyenne' matrix using 1:2:(sprintf(\"%s\", $3)) with labels font ',14' offset 0,1 ,\\\n",tenseur_format1.c_str());
131  fprintf(out,"'$data_ecart_type' matrix using 1:2:(sprintf(\"(%s)\", $3)) with labels font ',14' offset 0,-0.8\n",tenseur_format2.c_str());
132  }
133  else fprintf(out,"'$data_moyenne' matrix using 1:2:(sprintf(\"%s\", $3)) with labels font ',14'\n",tenseur_format1.c_str());
134 
135 
136 fclose(out);
137 }
138 
139 void MAGIC_PLOT::plot_histogramme(std::string data_histogramme, std::string output, bool aveccouleur)
140 {
141  plot_script_histogramme(data_histogramme,output,aveccouleur);
142  char chaine[500];
143  sprintf(chaine,"gnuplot -p %s",output.c_str());
144  if (fork()==0) {system(chaine);exit(0);}
145 }
146 
147 void MAGIC_PLOT::plot_script_histogramme(std::string data_histogramme, std::string output, bool aveccouleur)
148 {
149  FILE *out=fopen(output.c_str(),"wt");
150  fprintf(out,"#set terminal postscript eps size 3.0,2.00 enhanced color\n");
151  fprintf(out,"#set output %s\n",histogramme_nom_fichier_eps.c_str());
152  fprintf(out,"set title \"%s\" font ',14'\n",histogramme_titre.c_str());
153  fprintf(out,"set xrange []\n");
154  fprintf(out,"set yrange []\n");
155  fprintf(out,"set xlabel '%s'\n",histogramme_axeX_nom.c_str());
156  fprintf(out,"set ylabel '%s'\n",histogramme_axeY_nom.c_str());
157  fprintf(out,"plot '%s' using 3:4 with impulses notitle lc rgb 'blue' lw 2",data_histogramme.c_str());
158  fclose(out);
159 }
160 
161 
162 
163 
164 
165 
MAGIC_PLOT::plot_tenseur
void plot_tenseur(int num, OT_TENSEUR tens1, OT_TENSEUR tens2, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:50
MAGIC_PLOT::tenseur_maxbarcouleur
double tenseur_maxbarcouleur
Definition: magic_plot.h:48
MAGIC_PLOT::JAUNE
@ JAUNE
Definition: magic_plot.h:33
MAGIC_PLOT::VERT
@ VERT
Definition: magic_plot.h:33
MAGIC_PLOT::histogramme_titre
std::string histogramme_titre
Definition: magic_plot.h:53
MAGIC_PLOT::~MAGIC_PLOT
~MAGIC_PLOT()
Definition: magic_plot.cpp:46
MAGIC_PLOT::tenseur_format1
std::string tenseur_format1
Definition: magic_plot.h:45
MAGIC_PLOT::plot_histogramme
void plot_histogramme(std::string data_histogramme, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:139
magic_plot.h
MAGIC_PLOT::tenseur_titrebarcouleur
std::string tenseur_titrebarcouleur
Definition: magic_plot.h:44
MAGIC_PLOT::ROUGE
@ ROUGE
Definition: magic_plot.h:33
OT_TENSEUR
Definition: ot_tenseur.h:41
OT_TENSEUR::Get_NbCols
int Get_NbCols() const
Definition: ot_tenseur.cpp:251
MAGIC_PLOT::tenseur_nom_fichier_eps
std::string tenseur_nom_fichier_eps
Definition: magic_plot.h:49
MAGIC_PLOT::tenseur_titre
std::string tenseur_titre
Definition: magic_plot.h:43
MAGIC_PLOT::GRIS
@ GRIS
Definition: magic_plot.h:33
MAGIC_PLOT::tenseur_minbarcouleur
double tenseur_minbarcouleur
Definition: magic_plot.h:47
MAGIC_PLOT::MAGIC_PLOT
MAGIC_PLOT()
Definition: magic_plot.cpp:28
MAGIC_PLOT::plot_script_tenseur
void plot_script_tenseur(int num, OT_TENSEUR tens1, OT_TENSEUR tens2, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:60
MAGIC_PLOT::BLEU
@ BLEU
Definition: magic_plot.h:33
MAGIC_PLOT::VIOLET
@ VIOLET
Definition: magic_plot.h:33
MAGIC_PLOT::tenseur_couleur
int tenseur_couleur
Definition: magic_plot.h:42
OT_TENSEUR::Get_NbRows
int Get_NbRows() const
Definition: ot_tenseur.cpp:244
MAGIC_PLOT::tenseur_format2
std::string tenseur_format2
Definition: magic_plot.h:46
MAGIC_PLOT::histogramme_nom_fichier_eps
std::string histogramme_nom_fichier_eps
Definition: magic_plot.h:54
MAGIC_PLOT::histogramme_axeX_nom
std::string histogramme_axeX_nom
Definition: magic_plot.h:55
MAGIC_PLOT::plot_script_histogramme
void plot_script_histogramme(std::string data_histogramme, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:147
MAGIC_PLOT::histogramme_couleur
int histogramme_couleur
Definition: magic_plot.h:52
MAGIC_PLOT::histogramme_axeY_nom
std::string histogramme_axeY_nom
Definition: magic_plot.h:56
m
#define m(i, j)