gnuplot alternative avec plus de temps de précision
À l'heure actuelle, je suis en utilisant gnuplot pour tracer des données contre une ligne de temps. Cependant, la précision de la ligne de temps est exprimée en millisecondes, mais gnuplot ne semble être en mesure de poignée de secondes.
J'ai regardé un couple de solutions de rechange, mais vraiment j'ai juste besoin de quelque chose comme gnuplot qui peut faire face à des fractions de seconde.
Le langage de programmation utilisé pour le script principal est Python et alors que je l'ai regardé matplotlib, il semble être beaucoup plus "lourd" que gnuplot. Comme je ne serai pas toujours une mise à jour du graphique côté des choses, j'ai envie de le garder aussi simple que possible.
Des suggestions?
Mise à jour
Je suis en utilisant ce avec gnuplot:
set xdata time
set timefmt "%Y-%m-%d-%H:%M:%S"
Cependant il n'y a pas de %f pour obtenir millisecondes. Par exemple, cela fonctionne:
2011-01-01-09:00:01
mais j'ai besoin de:
2011-01-01-09:00:01.123456
- Pourriez-vous poster un extrait des données que vous essayez de tracer et les commandes que vous utilisez? gnuplot ne se soucient pas du tout sur les unités -- comment savoir si ils sont en secondes ou millisecondes, après tout? - alors je ne suis pas tout à fait sûr de ce qu'il fait, ou ne pas faire, ce n'est pas ce que vous voulez.
- Le plus petit timefmt est une deuxième raison d'une minute a 60 secondes et doit être traitée spécialement. Avec millisecondes je ne comprends pas quel est le problème?
- Ah, je comprends le problème maintenant, oui, c'est vraiment un problème et je ne pense pas qu'il y est une solution élégante.
- En effet, vous aurez à créer xtickmarks à un intervalle approprié largeur de vous-même (c'est la façon d'obtenir mon x étiquettes de graduation dans l'exemple ci-dessous)
- Btw, comme vous l'avez 6 chiffres, nous parlons de quelques microsecondes, pas millisecondes.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir les tiques format avec
ou (peut-être, je ne l'ai pas essayé, que je préfère utiliser Matplotlib et n'ont pas de gnuplot installé sur mes machines):
(notez le nombre de chiffres spécifié avec le
%S
chaîne de format).Plus de détails peuvent être trouvés dans l'excellent pas si des Questions Fréquemment Posées.
set timefmt "%Y-%m-%d-%H:%M:%.6S
. Alors que ce format est accepté, quand je lance leplot
commande je reçoiswarning: Bad time format in string
sur tous les points de données..6
de la timefmt et puis supprimer les décimales à partir de mes données, il sera alors le travail. gnuplot ne fait pas semblent être en mesure de gérer non entier secondes.%S
comme undouble
ce qui signifie que les fractions de seconde sont correctement interprétés.Selon la gnuplot 4.6 manuel il déclare, en vertu de "l'Heure/la date prescripteurs" (page 114 de la gnuplot 4.6 PDF):
Ce que cela signifie, c'est que lors de la lecture des horodateurs, comme
2013-09-16 09:56:59.412
la partie fractionnaire sera inclus en tant que partie de la%S
spécificateur. Tel un timestamp seront traitées correctement avec:et nourris avec des données comme:
set format x "%H:%M:%S"
, combinées avec des données dans la même seconde des résultats dans tous les x tics étiquetés avec la même valeur. E. g, on obtient "09:56:53", "09:56:53", "09:56:53" au lieu de "09:56:53.4", "09:56:53.5", "09:56:53.6".Je suis à l'aide de gnuplot pour les mêmes fins, mon entrée ressemble:
35010.59199,100,101
35010.76560,100,110
35011.05703,100,200
35011.08119,100,110
35011.08154,100,200
35011.08158,100,200
35011.08169,100,200
35011.10814,100,200
35011.16955,100,110
35011.16985,100,200
35011.17059,100,200
La première colonne est de secondes depuis minuit et après la virgule nanoseconde partie. Vous pouvez le sauver dans un fichier csv et dans gnuplut faire:
L'origine, j'avais mal compris votre problème. Je pense que la résolution plus fine pour le format de l'heure est un gros problème avec gnuplot et qui à ma connaissance n'est pas mis en œuvre.
Possible de contourner ce serait l'utilisation de awk pour convertir votre date dans le nombre de secondes avec quelque chose comme
et puis il suffit de faire un double régulière en double intrigue et d'oublier qu'il était à chaque fois en tout (un peu comme Martin solution).
Je crains que je ne suis pas très bon avec awk et donc je ne peux pas aider avec ce peu -
ces pages pourraient aider à bien -
http://www.gnu.org/manual/gawk/html_node/Time-Functions.html et http://www.computing.net/answers/unix/script-to-convert-datetime-to-seco/3795.html.
L'utilisation de awk avec gnuplot est décrit ici: http://t16web.lanl.gov/Kawano/gnuplot/datafile3-e.html.
Vous pouvez ensuite tracer un deuxième axe (et non pas les données) avec le bon temps - quelque chose comme la méthode utilisée ici: Est-il un moyen de tracer changement de jour à un horaire de l'échelle de temps sur l'axe des x?
J'ai peur de ne pas avoir le temps d'essayer et d'écrire une solution complète - mais quelque chose de raisonnable devrait être possible.
Bonne chance tiens nous au courant si vous obtenez quelque chose de travail, je serais intéressé.