2011-01-31 5 views
2

Je voudrais gnuplot quelques données pour divers dispositifs, où les données sont le temps ces appareils sont dans un certain état.gnuplot plot discrete (?) Données de temps

Par exemple, les dispositifs donnés un-e, tracer le moment où ils déclenchent l'alarme puis la sortie, par exemple dispositif un est en alarme 11:00, hors alarme à 12:00, etc ..

dev_a | x------x 
dev_b |  x-----x 
dev_c | x-x 
dev_d |   x------------------- 
dev_e |  x-----x  x-----x 
     |_______________________________ 
      |  |  |  |  | 
     11:00 12:00 13:00 14:00 15:00 

Les données d'entrée ne devraient provenir de journaux similaires à:

.... 
11:00 dev_a alarm on 
    .... 
11:00 dev_c alarm off 
11:10 dev_b alarm on 
    .... 
12:00 dev_a alarm off 
    .... 

Je ne suis pas vraiment sûr de savoir comment commencer — un tracé de colonnes de toutes sortes?

+0

Vous pouvez jeter un oeil à http://stackoverflow.com/questions/7684475/plotting-labeled-intervals-in-matplotlib-gnuplot – XTL

Répondre

2

Pour commencer, vous devez ajuster votre fichier d'entrée:

11:00 1 alarme dev_a sur
11h01 3 alarme dev_c hors
11h10 2 alarme dev_b sur
12:00 1 alarme dev_a hors
12h10 2 alarme dev_b sur
11h15 4 alarme dev_d sur
11h25 4 alarme dev_d hors

vous utilisez

set xdata time 
set timefmt "%H:%M" 
plot "file.txt" using 1:2:ytic(3) with points 

Vous avez besoin de la deuxième colonne pour placer toutes les entrées de l'alarme sur l'étiquette de l'axe 1 y.

Cela vous donnera presque ce que vous voulez. La seule chose qui manque est les lignes entre les points. Une possibilité est d'utiliser des flèches (sans la tête de la flèche donc en fait c'est une ligne) et de construire un fichier script afin de tracer toutes les flèches à la fois. Découvrez la réponse de Tom avec cette question pour un bel exemple: Plotting arrows with gnuplot

1

Si vous parvenez en quelque sorte à convertir et partager vos fichiers journaux dans un format comme celui-ci:

 
#time dev_a 
11:00 1 
12:00 1 
 
#time dev_b 
11:10 2 
12:10 2 

...

C'est le format de l'heure dans les flottants, les fichiers séparés par périphérique, l'alarme on/off à const dev_id. Traçage devient facile:

 
set style data linespoints 
set yrange [0:5] 
set xdata time 
set timefmt "%H:%M" 
plot "dev_a.data" using 1:2 title "dev_a", "dev_b.data" using 1:2 title "dev_b", ... 

Ok, la description axe y est toujours un problème, mais vous pouvez combiner cela avec réponse Martins.

+0

Pas une mauvaise idée, mais il faudrait un fichier séparé pour chaque on/off cycle pour chaque appareil, aussi longtemps que cela n'arrive pas beaucoup de fois c'est bien. – Martin

+0

en essayant de masser les journaux maintenant et d'essayer des suggestions. cependant, le point de lumpns est correct chaque dispositif ira dans/hors d'alarme souvent - n'a pas pensé à le signaler. exemple graphique horaire est pour la simplicité, réelle serait à la deuxième résolution à haute fréquence. des fichiers de données distincts pour chaque alarme haute seraient impraticables. – hanlonj

+0

Juste pour clarifier, combien de fichiers de données dev_e nécessiterait?1 ou 2 – hanlonj

Questions connexes