www.mikrocontroller.net

Forum: PC-Programmierung GnuPlot - Vektoren zeichnen


Autor: Tido Groothoff (Firma: FH Osnabrück) (metro83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,

ich bin neu hier und das aus dem unschönen Grund, weil ich ein Problem 
habe. Vielleicht könnt Ihr mir da ja helfen.

Ih habe ein Programm geschrieben, dass mir Daten in Dateien schreibt und 
mir diese dann in GnuPlot anzeigt.

Das funktioniert eigentlich auch ganz gut nur habe ich noch ein Problem:

Ich würde gerne Vektoren in Gnuplot zeichnen weiß aber nicht wie diese 
mit welcher Syntax in die Files geschrieben werden müssen.

Was ich bei den Koordiantenpunkte mache ist, dass ich die Daten einfach 
in eine Datei schreibe mit x und y Koordinaten und diese dann an GnuPlot 
übergebe.
Genau so würde ich es auch gerne mit den Vektoren machen nur finde ich 
die Syntax dazu nicht.

mit    set arrow 3 from 0,-5 to 0,5   soll man einen Pfeil malen können, 
allerdings will das bei mir nicht so recht funktionieren.


Momentan stehe ich etwas neben mir und bekomme es einfach nicht, weil es 
wahrscheinlich wieder eine Kleinigkeit ist.


Wäre für Tipps oder Vorschläge dankbar.


Mit freundlichen Grüßen
Tido

Autor: Rüdiger Knörig (sleipnir)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"set arrow" funktioniert nur wenn Du schon ein Plot hast:
"gnuplot> plot sin(x)
gnuplot> set arrow 3 from 0,-1 to 2,0.5
gnuplot> replot"

Was Du suchst ist sicher so eine Darstellung:
http://www.columbia.edu/~sl2403/gnuplot/intro/style9.png
"Draw vectors. An arrow is plotted from (X,Y) to (X+dX,Y+dY). So that 
you need 4 columns data in your data file."

Also: Wenn Du eine Datei test.dat mit dem Inhalt
0 0 1 1
0 0 -1 1
hast wird Dir
plot "test.dat" with vector
die Vektoren plotten.

PS: Wenn Du mit LaTeX arbeitest oder überhaupt Formeln oder griechische 
Symbole verwendest kann ich Dir pyxplot empfehlen.
http://www.pyxplot.org.uk/gallery.shtml

Willst Du die Daten mit einem C/C++-artigen Programm generieren schau 
Dir auch mal Asymptote an!
http://asymptote.sourceforge.net/gallery/

Autor: Tido Groothoff (Firma: FH Osnabrück) (metro83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig erkennt und gleich die Lösungen geliefert.


Ich habe das gerade einmal durchgetestet und es funktioniert wirklich 
sehr gut. Hatte mich zuerst über die etwas mekrwürdige Darstellung der 
Vektoren gewundert dann aber doch gesehen, dass auch hier die dritte und 
vierte Koordinaten nicht das Ende des Vektors beschreiben sondern den 
gemalten Vektor an sich.
Stand ja auch in deinem Post nur halt noch nicht in meinem Programm.

Für die angegebenen Links bin ich ebenfalls sehr dankbar. Ich werde 
diese leider wegen des zeitlichen Mangels dieses Mal nicht mehr 
verwenden können, jedoch ist das mit Sicherheit etwas für die nächsten 
Programme und die lassen nie lange auf sich warten, denn man braucht 
immer kleine Helferlein.

Latex ist für mich im nächsten Semester ein Thema, da ich dann in meinem 
Praxissemester bin und mich dann damit auseinandersetzen wollte.
Vorrangig erst einmal um meinen Praxissemesterbericht zu erstellen und 
dann um mal zu schauen, welches Potenzial noch dahinter steckt.


Vielen Dank. Das hat mir wirklich weitergeholfen.

mit freundlichen Grüßen
Tido Groothoff

Autor: Tido Groothoff (Firma: FH Osnabrück) (metro83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich hätte da noch einmal eine Frage, weil mir auch nicht klar ist 
ob das überhaupt mit GnuPlot machbar ist.

Meine verwendeten Koordinatendateien enthalten Daten folgender Form:
1 3
1 6
4 5
3 3
7 3

ist es hier möglich, wenn ich an jede Zeile eine weiter Zahl anhänge, 
dass diese als Beschriftung für die geplotteten Datenpunkte verwendet 
werden kann.

1 3 1
1 6 2
4 5 3
3 3 4
7 3 5

Derzeit verwende ich für den Aufruf:
plot "c:/koordinatendatei.dat" with points lt -1 lw 12

Mit freundlichen Grüßen
Tido

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So geht's:
plot "koordinatendatei.dat" with points lt -1, "" with labels offset 0,1

Nach labels dürfen neben offset weitere Optionen stehen, die im
Manual unter set label zu finden sind:

  http://www.gnuplot.info/docs/node193.html

Stehen die Labels nicht in der dritten Spalte der Datei, oder sollen sie
vor der Ausgabe umgeformt werden, kann dazu die /using/-Option verwendet
werden.

Autor: Tido Groothoff (Firma: FH Osnabrück) (metro83)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sehr gut auch das hat funktioniert. Muss leider gestehen, dass die Hilfe 
aus dem GnuPot für mich nicht immer eindeutig ist, jedoch klappt es nach 
mehrerem Probieren meistens doch.

Vielen Dank für die ausfühliche Hilfe.

Mit freundlichen Grüßen
Tido Groothoff

Autor: Ole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Moin,
ich habe auch eine Frage zu der Darstellung von Vektoren in GnuPlot und 
wär euch dankbar wenn ihr mir helfen könntet. Ich habe die Aufgabe eine 
gewisse Anzahl von Punkten mit ihren Fehlervektoren darzustellen. Das 
Problem hierbei ist, dass die Vektoren sehr klein sind und eigentlich 
mit einem Skalar multipliziert werden müssten um sie überhaupt sehen zu 
können. In meiner Koordinaten Datei sind sie allerdings unskaliert 
gespeichert. Meine Frage ist also ob es möglich ist, beim Einlesen der 
Werte auch noch einen Faktor zum Skalieren zu übergeben.
Schonmal vielen Dank im Vorraus!

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>gewisse Anzahl von Punkten mit ihren Fehlervektoren darzustellen.

Ich kenne eher den Ausdruck Fehlerbalken -- wenn das gemeint ist:
Du kannst die Daten skalieren. Die Daten

stefan@AMD64-X2 ~ $ cat data.txt
0 0 0.1 -0.3
1 1 0.1 -0.3
2 4 0.1 -0.3
3 9 0.1 -0.3
4 16 0.1 -0.3
5 25 0.1 -0.3
6 36 0.1 -0.3
7 49 0.1 -0.3
8 64 0.1 -0.3
9 81 0.1 -0.3
10 100 0.1 -0.3

könnte man plotten mit

gnuplot> plot "data.txt" using 1:2:($2+10*$3):($2+10*$4) with errorbars

($3) ist der Fehlerwert von Spalte 3, ($3*10+2) das zehnfache plus 2.
Näheres siehe Dokumentation oder Gnuplot Mailingliste.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise möchte Ole ein Vektorfeld zeichnen lassen. Aber auch das
ist kein Problem, da auch dort mit der using-Option die dargestellten
Werte nach Belieben aus den Werten aus der Datei errechnet werden
können.

Autor: Ole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe in einem anderen Forum noch eine gute Lösung für mein Problem 
gefunden:

gnuplot> faktor = 5
gnuplot> plot "file.dat" using 1:2:($3*faktor):($4*faktor) with vector

Mit diesem Befehl kann also die Länge der Vektoren verändert werden.

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.