• # Tu as trouvé toi-même la réponse !

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

    L'information que tu as trouvé sur le web concernant l'impossibilité d'utiliser plusieurs formats de temps différents est à la fois la source et la clé du problème.

    La version de développement (en cvs) de gnuplot donne l'indication suivante concernant les formats d'heure et date :


    Internally all times and dates are converted to the number of seconds from the year 2000. The command set timefmt defines the format for all inputs: data files, ranges, tics, label positions---in short, anything that accepts a data value must receive it in this format. Since only one input format can be in force at a given time, all time/date quantities being input at the same time must be presented in the same format. Thus if both x and y data in a file are time/date, they must be in the same format.


    Ainsi, il faut que tu t'arranges pour que tes données heure/date soient toutes dans le même format. En pratique, ça donne ça :

    Le fichier de données original :

    # Date Time T6 H6 T4 H4
    03/01/05 09:30 19.5 27.0 22.5 23.0
    04/01/05 11:41 19.6 28.0 22.3 24.0
    10/01/05 09:30 18.7 40.0 22.2 22.0
    ...


    Il doit s'écrire :

    # Date Time T6 H6 T4 H4
    03/01/05_00:00 01/01/05_09:30 19.5 27.0 22.5 23.0
    04/01/05_00:00 01/01/05_11:41 19.6 28.0 22.3 24.0
    10/01/05_00:00 01/01/05_09:30 18.7 40.0 22.2 22.0
    ...


    Ca prend trois secondes avec un éditeur de texte, où tu remplaces "/05 " par "/05_00:00 01/01/05". Ainsi, les deux colonnes sont dans le même format.

    Pourquoi mettre toute la deuxième colonne à la même date ? Parce que ce qui t'intéresse, c'est justement l'heure, mais que gnuplot prend en compte la donnée d'ensemble heure+date. (La commande 'set format ...' n'influe que sur la façon dont les échelles sont affichées en abscisse et ordonnée, les 'labels').

    A quoi doit ressembler ton fichier de script ?
    Pratiquement inchangé, à ceci près que tu n'appelles qu'une fois "set timefmt ...". J'ai utilisé le script suivant :


    set xdata time
    set ydata time

    set timefmt "%d/%m/%y_%H:%M"

    set xrange ["01/01/05_00:00":"31/12/05_00:00"]

    set format x "%d/%m"
    set format y "%H:%M"

    set missing 'NaN'

    set title "Time of measurement - 2005"
    set xlabel "Days"
    set ylabel "Time"
    set autoscale y
    plot 'th.txt' using 1:2 notitle with lines


    et j'obtiens le résultat attendu : http://tipote.free.fr/time.png

    En conclusion, gnuplot, c'est formidable !