Forum: PC Hard- und Software Gnuplot-Achsen neu skalieren


von Lars (Gast)


Lesenswert?

Hallo zusammen



Ich habe eine Messwertdatei "daten.dat" vorliegen, die in der Form

"untere Grenze","Messwert1","obere Grenze"
"untere Grenze","Messwert2","obere Grenze"

aufgebaut ist.

Diese möchte ich mit Gnuplot anzeigen lassen.
Die Ausgabe selbst ist kein Problem, doch nun möchte ich gern noch die 
Achsen umskalieren. Die Messwerte wurden mit einer Frequenz von
1kHz aufgenommen. Da in x-Richtung der zeitliche Verlauf
dargestellt werden soll, müssen die Werte mit der Abtast-
frequenz verrechnet werden.
Auch die y-Werte (Messwert1,...) sollen vorher noch verrechnet
werden.

Wie funktioniert das, finde keine Quellen hierzu?!

Bisher rufe ich die Daten immer mit 'plot "daten.dat" using 1, 
"daten.dat" using 2, "daten.dat" using 3' auf.


Ich hoffe, es kann mir wer weiterhelfen.

MfG
Lars

von Stefan Salewski (Gast)


Lesenswert?

Ja, wie war das noch?

Hat man einen einspaltigen Datensatz, also nur die y-Werte:

plot ’file’ using 1
plot ’file’ using 0:1

Die Null steht dann für die fehlende erste Spalte (x-Wert) und läuft 0, 
1, ...

Will man Rechnen muss man das $-Zeichen verwenden:
plot ’file’ using ($0):($1)

plot ’file’ using ($0*0.1):($1*2.5)

Vielleicht hilft das schon. Steht aber alles in der Dokumentation.
Wenn sich hier sonst keiner mehr meldet: Es gibt auch eine 
Gnuplot-Mailingliste. Ich kann leider nicht helfen, da ich gnuplot 
derzeit nicht installiert habe und mich nicht mehr so genau erinnere.

von Stefan Salewski (Gast)


Lesenswert?

Ich denke meine Erinnerung war halbwegs richtig,
hier eine Antwort aus der gnuplot Newsgroup:

http://groups.google.de/group/comp.graphics.apps.gnuplot/browse_thread/thread/744861b7f50a4fc3/4ff1e747e17191cb?hl=de&lnk=st&q=group%3Acomp.graphics.apps.gnuplot+scaling+axis#4ff1e747e17191cb

Oben hatte ich geschrieben, es gäbe eine Mailingliste. Mag sein, 
vielleicht gibt es auch nur die Newsgroup.

von Lars (Gast)


Lesenswert?

Danke für den Tip. Für die x-Achse hat's funktioniert.
Was ich in der Newsgroup allerdings nicht entdeckt habe, ist
eine Skalierung der y-Achse in Abhängigkeit der Messwertzeilen.
Ich hab in meiner Messwertdatei keine Konstante Anzahl von Zeilen,
da sie von der Aufnahmedauer (bei einer Frequenz von 1kHz)
abhängig ist.
Nun muss ich vor dem Plotten erst einmal die Anzahl der Zeilen
in Erfahrung bringen, damit ich sie durch "1000Hz" teilen kann
und sich dann hieraus die korrekte Skalierung der Zeitachse ergibt.

Hierzu vielleicht eine Idee?


Gruß
Lars

von Stefan Salewski (Gast)


Lesenswert?

>eine Skalierung der y-Achse in Abhängigkeit der Messwertzeilen.

Weiß ich leider nicht.
Dazu müsste gnuplot ja zunächst die gesamte Datei einlesen, die Anzahl 
der Zeilen mit Daten ermitteln und das Resultat in einer Variablen 
ablegen. Mag sein das das jetzt geht (ich hatte zuletzt 4.0 verwendet).

Am besten fragst Du aber auf der Mailingliste oder der (identischen) 
Newsgroup, wobei es sein könnte, dass die Newgroup "Read-Only" ist.

Bis zur Version 4.0 war die Mehrheit der Gnuplot-Autoren der Ansicht, 
dass gnuplot in erster Linie zur Darstellung von Daten verwendet werden 
soll, weniger zur Datenverarbeitung (Skalierung in Deinem Fall).

Wenn ich heute Messdaten hätte, mit denen ich grössere Bearbeitungen 
durchführen muss, bevor ich sie darstelle, würde ich das mit Python 
machen. Für Python gibt es auch Erweiterungen zur Datendarstellung und 
soweit ich weiß auch ein Interface zu gnuplot.

Aber frag mal auf der Mailingliste/Newsgroup.

von Lars (Gast)


Lesenswert?

Ist es denn wirklich so, dass ich dazu rechnen muss?

Ich dachte da an sowas wie die xtics-Einstellung, in der ich dann 
irgendwie mit angeben kann, dass er alle zig Messwerte eine Marke setzt 
und die aktuelle Messwertposition dann durch meine Messfrequenz 
dividiert wird. Hierdurch würde ich keine Vorausermittlung der 
Messwertmenge benötigen...

von Stefan S. (ssalewski)


Lesenswert?

Autor:  Lars (Gast) schrieb:

>Nun muss ich vor dem Plotten erst einmal die Anzahl der Zeilen
>in Erfahrung bringen, damit ich sie durch "1000Hz" teilen kann
>und sich dann hieraus die korrekte Skalierung der Zeitachse ergibt.

>Ist es denn wirklich so, dass ich dazu rechnen muss?

Ich hatte Dich so verstanden, dass Du die Y-Werte irgendwie mit der 
Anzahl der Messwerte skalieren willst.

Du schreibst "muss ich vor dem Plotten erst einmal die Anzahl der Zeilen
in Erfahrung bringen", dann müsste Gnuplot das wohl auch.

So ganz klar ist mir Dein Problem nicht geworden, und scheinbar gibt es 
hier sonst niemanden der Dir antworten kann bzw. will.

Wenn Du dein Problem klar formulieren kannst, evtl. mit Beispiel, dann 
wäre es wirklich am besten auf der Mailingliste bzw. in der Newsgroup 
nachzufragen (notfalls auch auf Deutsch, besser natürlich Englisch). 
Wenn Du gnuplot weiter verwenden willst, so wirst Du eh noch die eine 
oder andere Frage haben, und dort sitzen die Experten. Ich habe gnuplot 
in den letzten Jahren nicht benötigt und schon wieder vieles vergessen, 
und ich kenne auch nur die Version 4.0.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.