% % nouveau 27 septembre 2020 % \chapter{Gnuplot} \index{Gnuplot}\label{chap:gnuplot} Gnuplot - an interactive plotting program There is an on-line demo collection at http://gnuplot.info/demo \begin{verbatim} gnuplot> splot "cam.indoor" using 2:4:3, "cam.indoor" using 5:7:6 \end{verbatim} % ------------------------------------------------------------------- \section{Exemple : le phytotron} \index{phytotron} Un exemple réel, issu d'un projet d'élevage d'algues bio-luminescentes dans un frigo bricolé par une jeune stagiaire fort sympathique. Le fichier des données contient cinq champs séparés par des espaces ou des tabulations. Le premier champ est un \textsl{timestamp} exprimé en secondes depuis l'\textsl{epoch}, et les quatre suivants sont des températures en degrés Celsius. \begin{verbatim} #!/bin/bash # THIS IS A KLUDGE nbsamp=3000 # nombre d'echantillon if [ $# -eq 1 ]; then nbsamp=$1 fi DATAFILE="serial/foo.dat" IMAGE="graphe.png" TMPFILE="/dev/shm/tmpdata" tail -${nbsamp} < ${DATAFILE} > ${TMPFILE} gnuplot << __EOC__ set term png size 1600,800 set output "${IMAGE}" set ytics 2 set xtics set grid front set title "* Temperatures du Phytotron *" set xdata time set timefmt "%s" set format x "%b %d\n%H:%M" set yrange [ 10.0 : 40.0 ] plot "${TMPFILE}" using 1:3 title " inside" with lines, \ "${TMPFILE}" using 1:4 title "ambient" with lines __EOC__ \end{verbatim} \textsf{Bon, un de ces jours, il faudrait que je ressorte des archives l'enregistrement d'un été dans le dd2, pour que vous puissiez voir le résultat de ce script en « pour de vrai ».} % ------------------------------------------------------------------- \section{Paramétrer la plume} Largeur, couleur, odeur, toussa. % ------------------------------------------------------------------- \section{La 3D avec \texttt{splot}} \index{splot} gnuplot> help set view The `set view` command sets the viewing angle for `splot`s. It controls how the 3D coordinates of the plot are mapped into the 2D screen space. It provides controls for both rotation and scaling of the plotted data, but supports orthographic projections only. It supports both 3D projection or orthogonal 2D projection into a 2D plot-like map. % ------------------------------------------------------------------- \section{Des trucs...} Comment générer un signal carré~: % https://lcamtuf.substack.com/p/square-waves-or-non-elephant-biology \begin{verbatim} set samples 2000 odd_h(x, n) = sin(x * (2*n - 1)) / (2*n - 1) plot sum [n=1:20] 4/pi * odd_h(x, n) \end{verbatim} % ------------------------------------------------------------------- \section{Questions} Supposons que nous ayons sous le coude un fichier contenant \emph{six cent mille} lignes de données, qui ne représentent que trente secondes d'enregistrement d'une valeur de Virgo\index{Virgo}, comment faire pour plotter les échantillons $N$ à $N+42$ ? for example \texttt{plot ’a.dat’ every 2}. % -------------------------------------------------------------------