PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gnuplot



Platin
11-03-2011, 15:54
Hey an Alle,

ich beschäftige mich gerade ein wenig mit Gnuplot und bin auf ein paar Probleme gestoßen, die ich nicht alleine lösen kann. Ich habe es natürlich auch schon mit der Documentation versucht, aber bin nicht fündig geworden.
Und zwar möchte ich 2 Datenreihen plotten, also 2 Graphen erstellen aus extrenen txt-files. Das habe ich auch schon gemacht und ich kann auch ganz normal ein png. bild oder ähnliches speichern. Ich möchte keine Farben verwenden also beide Graphen in Schwarz-Weiß darstellen. Der eine Graph soll gestrichtelt sein und kleine Kreise beinhalten, der andere durchgezogen mit Kästchen. Das zweite Problem ist dass wenn man zum Beispiel die Achsenbeschriftung ändere, also zb. von 1 auf 0.00001 dann wird das Bild einfach zusammengedrückt. Was ich möchte ist aber dass die Größe des Bereiches in dem der Plot liegt immer gleich bleibt. Weil wenn ich 2 Bilder untereinander habe, mit unterschiedlicher Skalierung, ist das doof wenn die Bilder unterschiedlich eingerückt sind. Ich will also ein Lineal anlegen können und die Kästchen in denen die Plots liegen sollen immmer auf einer Linie liegen.
Mein 3tes Problem ist dass wenn ich das ganze in Latex einbinden möchte auf einmal meine Formatierung komplett weg ist,die Linien der beiden Graphen einfach glatt sind. Weiterhin wird die y-Achsenbeschriftung nicht gedreht, sondern steht da in horizontaler Richtung.
Hier ist mein Anfängerskript dazu:


set xlabel 'Zeit [s]'
set ylabel 'Spannung [V]'
unset title
set key 30, 80
set pointsize 0.5
set terminal latex
set output 'file.tex'
plot [-10:35] [0:90] 'Daten_Graph1.txt' u 1:2 smooth csplines t "SIM" w lines lt 0 , 'DatenGraph2.txt' u 1:2 t "EXP" w lp 1 5



Kann mir jemand bei meinen 3 Problemen helfen?
Danke euch

Grüße

localghost
11-03-2011, 17:05
Lade mal die Datensätze hier hoch, damit das Problem halbwegs nachvollziehbar wird.


Thorsten

bobmalaria
11-03-2011, 21:14
hi,

meinst du sowas?


\begin{filecontents}{text.dat}
1 1 1.2 0.9
2 2 1.8 2.1
3 3 3.1 3.1
4 4 3.8 4.2
\end{filecontents}

\documentclass{article}

\usepackage{gnuplottex}


\begin{document}

\begin{gnuplot}
unset key
plot 'text.dat' u 1:2 w l ls 2, 'text.dat' u 3:4 pt 7
\end{gnuplot}

\end{document}


http://www.mrunix.de/forums/attachment.php?attachmentid=4404&stc=1&d=1299874449

oder sowas (meine lieblingsmethode)


\begin{filecontents}{text.dat}
1 1 1.2 0.9
2 2 1.8 2.1
3 3 3.1 3.1
4 4 3.8 4.2
\end{filecontents}

\documentclass{article}

\usepackage{pgfplots}


\begin{document}

\begin{tikzpicture}
\begin{axis}[
title= {the something of something},
ylabel = {Some stuff},
xlabel = {More things}
]
\addplot[marker=none,draw,dashed] gnuplot[raw gnuplot] {
plot 'text.dat' u 1:2
};
\addplot[mark=*,draw=none] gnuplot[raw gnuplot] {
plot 'text.dat' u 3:4
};
\end{axis}

\end{tikzpicture}
\end{document}


http://www.mrunix.de/forums/attachment.php?attachmentid=4405&stc=1&d=1299875710

Platin
12-03-2011, 10:19
Hey Bobmalaria,

ja sowas in der Art.
Nur das die gestrichelte Linie die runden, nicht ausgefüllten Punkten zusätzlich enthalten soll, also sone Kombination aus gestrichelter Linie und den Punkten. Und das gleiche für die durchgezogene Linie. Diese soll auch eine Kombination aus durchgeszogener Linie sein und ausgefüllten Kästchen.
Und was mir halt noch wichtig ist die Sache mit der gleichen Plotgröße. Also wenn ich deine beiden Plots direkt untereinander packe sind dann die Rahmen in denen die Plots liegen genau gleich groß oder hat sich der Rahmen bei der Skalierung[0.5 bis 4.5] verkleinert, da dort ja nun eine Dezimalstelle mehr aufgeführt wird ? Das Problem dann, was ich aus Excel kenne ist das wenn ich anstatt von 1 Dezimalstelle 2 oder 3 habe das Bild einfach zusammenschrumpft, der Rahmen also immer weiter eingerückt wird.

Grüße

bobmalaria
12-03-2011, 12:32
hi,

also geht es dir nur um plot marker und linienstile? das war so aus deiner ersten frage nicht so direkt herauszulesen.

wenn du dir mal das pgfplot paket näher ansiehst, dann denke ich gibt es zu jeder deiner fragen eine antwort. ausserdem kannst du mit diesem paket auch die breite und höhe deines plots einstellen und es gibt sogar eine funktion um 2,3 oder mehr plots in einer art raster anzuordnen.

gruss

Platin
14-03-2011, 07:48
Hey ok, ich gucke mir das gleich mal an.
Also gibt es keine Möglichkeit das direkt mit Gnuplot zu machen ?

Grüße

bobmalaria
14-03-2011, 12:03
hi,

wir sind kein gnuplot forum und wie es scheint weiss keiner momentan wie man das in gnuplot loesen kann. der vorteil der pgfplots variante ist aber das die berechnung deiner funktion von gnuplot uebernommen wird, das plotten allerdings von pgfplots. somit hast du innerhalb deines dokumentes die volle kontrolle ueber das aussehen des plots.

als bonus bekommst du dazu noch eine schriftart bei der achsenbeschriftung die zu der in deinem dokument passt. das sieh im allg. sehr viel besser aus als eine externe grafik mit anderer schriftart.

in der pgfplots anleitung gibt es auch einen abschnitt ueber alle marker und linienstile die verfuegbar sind. wie schon gesagt denke ich das das ein guter weg waere.

solltest du den plot spaeter nochmal als einzelgrafik brauchen, dann kann man mit der standalone dokumentenklasse auch ein png oder eps aus dem pgfplots code generieren.

gruss

Curryhunter
14-03-2011, 12:58
Hallo,
man kann doch auch mit den gnuplot-Befehlen die volle Kontrolle behalten, wenn ich mich nicht irre. Schriftart etc. werden mit meinem Beispiel (kompilieren über den Weg tex -> ps -> pdf) ebenso wie im Hauptdokument übernommen wie beim pgfplot-Beispiel.

Bei den Marker bzw. Linienstilen kann ich im Moment nicht weiterhelfen, ich glaube aber, dass die auch bei gnuplot so einstellbar sind, wie von Dir gewünscht.

Grüße
Stefan



\begin{filecontents}{text.dat}
1 1 1.2 0.9
2 2 1.8 2.1
3 3 3.1 3.1
4 4 3.8 4.2
\end{filecontents}

\documentclass{article}

\usepackage[miktex]{gnuplottex}


\begin{document}
\begin{figure}
\begin{gnuplot}[terminal=epslatex]
set xlabel 'Zeit [s]'
set ylabel 'Spannung [V]'
unset title
set key 30, 80
set pointsize 0.5
plot 'text.dat' u 1:2 w l ls 2, 'text.dat' u 3:4 pt 7
\end{gnuplot}
\end{figure}
\end{document}

bobmalaria
14-03-2011, 13:02
kann doch auch mit den gnuplot-Befehlen die volle Kontrolle behalten, wenn ich mich nicht irre.

ja klar, das habe ich nicht verneint. ich wollte nur den heinweis geben das es eventuell etwas bequemer geht oder eben einfach nur anders :)

Platin
14-03-2011, 19:46
Hey,

danke euch beiden. Ja, ich weiß, es gibt leider keine reines Gnuplot-Forum.
Ja, na das Problem ist, dass ich es eben nur als "Spezialfall" im Latex machen möchte. Es gibt mindestens genauso viel Fälle, wo ich einfach nur die Grafiken erstellen will und in einem Ordner abspeichern möchte. Mit den Linien etc bekomme ich schon irgendwie alleine hin denke ich, aber problematisch ist eben die Sache dass das "Plotfenster" unabhängig von der Achsenskalierung immer gleich groß bleiben soll. Ich kann mir eigentlich auch nicht vorstellen dass das so schwer ist. Ich dachte dass es da ganz einfach einen Befehl "windowsize" oder so was gibt, weil dass ja jetzt keine besonders spezielle oder schwierige Aufgabe ist. Genauso wie ich eben die Achsenbeschriftung vorgebe, möchte ich die Fenstergröße konstant halten.
Dachte halt blos, dass das dewegen jmd auf Anhieb weiß.
Wenn jmd von euch ein reines Gnuplotforum kennt, dann melde ich mich auch da an. Habt ihr da nen heißen Tipp ?

Grüße