mikrocontroller.net

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


Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Salewski (Gast)
Datum:

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

http://groups.google.de/group/comp.graphics.apps.g...

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

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stefan Salewski (ssalewski)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.