• [^] # Re: Tu as trouvé toi-même la réponse !

    Posté par . En réponse au message Gnuplot : heure en fonction du jour ?. Évalué à 1.

    Merci pour toutes les réponses. J'ai finalement choisi la dernière solution parce que çà marche bien sans trop déranger ma paresse.

    Le problème que j'ai eu alors est que, comme je dois entrer les données chaque jour, je n'ai pas envie (cfr. la paresse ci-dessus) de taper les "caractères inutiles" : "_00:00 01/01/05_" entre la date et la température. Je continue donc à entrer le date et l'heure normalement. Puis, j'exécute le script Perl ci-dessous pour créer un nouveau fichier de données, insérer ce qu'il faut où il faut et créer le graphique adéquat avec Gnuplot. Voici le script (TIMTOWTDI) :

    -----8<-----
    $file1 = "th.txt"; # original file with format "DD/MM/YY HH:MM"
    $file2 = "th.txt2"; # target file with format "DD/MM/YY_00:00 01/01/06_HH:MM"

    # open the files
    open FILE1, "$file1"
    or die "Cannot open $file1.\n";

    open FILE2, ">$file2"
    or die "Cannot open $file2\n";

    # parse lines from $file1 and save them in $file2
    while(!eof(FILE1))
    {
    $line = ;
    $linedate = substr($line, 0, 8);
    $linedate = $linedate . "_00:00 01/01/06_";
    $therest = substr($line, -26);
    $line = "$linedate$therest";
    print FILE2 "$line";
    }

    # close files
    close FILE1;
    close FILE2;

    # open pipe for Gnuplot
    open(PLOT, "| gnuplot")
    or die "Impossible to launch gnuplot\n";

    print PLOT qq{set term png small\n};
    print PLOT qq{set xdata time\n};
    print PLOT qq{set ydata time\n};
    print PLOT qq{set timefmt "\%d/\%m/\%y_\%H:\%M"\n};
    print PLOT qq{set format x "\%m/\%y"\n};
    print PLOT qq{set format y "\%H:\%M"\n};
    print PLOT qq{set xrange ["01/01/03_00:00":"31/08/06_00:00"]\n};
    print PLOT qq{set missing 'NaN'\n};
    print PLOT qq{set out "th-hour.png"\n};
    print PLOT qq{set title "Time of measurement, 2003 - 2006"\n};
    print PLOT qq{set xlabel "Month/Year"\n};
    print PLOT qq{set ylabel "Time (hour:minute)"\n};
    print PLOT qq{set autoscale y\n};
    print PLOT qq{plot 'th.txt2' using 1:2 notitle with lines\n};
    print PLOT qq{reset\n};
    close PLOT;
    -----8<-----

    - Un exemple de résultat : http://jepoirrier.free.fr/graphs/th-hour.png (sur pratiquement 3 ans)
    - Le script : http://jepoirrier.free.fr/graphs/th-hour.pl