PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplots mit gnuplot



humpenjack
18-10-2013, 12:48
Hallo, ich habe ein Diagramm, welches ich aus einer *.dat Datei auslese und anschließend mit gnuplot in ein Diagramm einfüge. Ich hänge mal sowohl ein Minimalbeispiel sowie das dat-file an. Das Problem liegt in der Darstellung des Diagramms - ich möchte dieses eigentlich so ausgeben lassen, dass es erst bei 6 der x-Achse startet. Wenn ihr in das dat-file reinschaut, habe ich einen ersten Wert auskommentiert. Wird dieser nicht auskommentiert, wird das Diagramm geplottet, wobei auch dieser erste Bereich mit ausgegeben wird. Zusätzlich kommt eine Fehlermeldung während des kompilierens die ich eigentlich nur kenne, wenn die Schritte zwischen den einzelnen Punkten zu groß oder zu klein sind ... aber auch daran konnte ich bisher nichts ändern. Hat vielleicht jemand von euch eine Idee?

Herzlichen Dank


\documentclass[
]{scrreprt} %ehemals report % Classes: scrartcl, scrreprt, scrbook, book, article, ...

\usepackage{ pgfplots} %Paket zur pdf-Diagrammerstellung
\pgfplotsset{ /tikz/font={\footnotesize},
grid=both,
compat=1.8, %Bitte Version 1.8 nutzen
scale only axis,
axis line style={line width=1.0pt},
/pgf/number format/use comma,
}
\begin{document}

\begin{figure}[htbp]
\centering
\begin{tikzpicture}
\begin{axis}[
width=8cm,
height=5cm,
xmin=0, xmax=40,
ymin=30, ymax=130,
xtick={6,8,10,12,16,20,24,28,32,36,40},
ytick={40,60,...,140},
xlabel style={
anchor= north,
fill=white,
},
ylabel style={
anchor= south,
fill=white,
},
]

\addplot gnuplot [id=eligeversu, mark=none, color=black, line width=0.5pt, solid]
{'elige_stab_versu.dat' using 1:2};

\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

Curryhunter
19-10-2013, 11:42
Sorry kann es grad nicht selber testen, bin am falschen Rechner.

2 Ideen hätte ich:
1. den xmin-Wert in pgfplots auf 6 setzen (steht auf 0)
2. die Auskommentierung in gnuplot wird mit # gemacht, nicht mit dem %-Zeichen.

Manchmal braucht es auch eine Leerzeile nach der auskommentierten Zeile.

Grüße
Stefan

bobmalaria
19-10-2013, 23:12
hi,

ich denke dir geht es nur ums testen, aber so wie ich es verstehe ist es sinnlos ein x,y datenfile mit gnuplot zu plotten. denn gnuplot gibt dir ja nur wieder eine *.table datei mit x,y werten zurück.

gnuplot sollte man nur verwenden wenn man mit koordinaten rechnen muss oder irgendwelche funktionen zu daten fittet - rechenintensive ooperationen eben.

gruss

humpenjack
20-10-2013, 14:11
Hey,
ja genau, was das Auskommentieren angeht sollte es nur ein Beispiel sein. Bisher habe ich alle meine Graphen vorher immer durch Gnuplot geschickt und dann aus der entsprechenden *.dat-Datei ausgelesen. Habe davon unzählige Diagramme und entsprechend unzählige dat-Dateien (>200). Wie könnte ich es denn ohne Gnuplot machen? Ich möchte schon auf die externen Dateien so zugreifen, da ich keine 100 und mehr Datenpunkte je dat-Datei von Hand eingeben möchte?

Herzlichen Dank schon mal für das erste Feedback

bobmalaria
20-10-2013, 14:51
hi,

also wie gesagt, du kannst auch datenfiles mit pgfplots direkt plotten. wie steht in der anleitung. ist es eine datei mit nur x,y werten dann geht das einfach mit


\addplot file {daten.dat};

sollte die datentabelle mehrere spalten haben und überschriften, dann kannst du die tabelle einlesen. z.b. bei einer tabelle mit komma separierten spalten.


\addplot table[x=xspaltennamen,y=ysplatennamen,col sep=comma] {tabelle.dat}

du musst also von hand nix eingeben.


nochmal zur erklärung: wenn du eine tabelle mit den werten 0,0 und 1,1 durch gnuplot jagst, dann wird eine datei erstellt die wieder genau 0,0 und 1,1 enthält. du hast also nichts gewonnen. das verwenden von gnuplot lohnt sich wenn du z.b. zu deinen daten eine fitting operation durchführen willst.

wenn du sehr viele datenpunkte hast, dann kann die kompilierung manchmal abbrechen mit der fehlermeldung "memory exceeded" (verwendung von pdflatex).
ich behelfe mir dann mit der external library \usetikzlibrary{external}. diese wandelt plots in pdf bilder um damit die nicht jedes mal neu erstellt werden. dadurch wird deine kompilierung wieder richtig schnell.

außerdem kann zum erstellen der plots lualatex verwenden welches keine memory limits hat. dazu kann man dann den externalize befehl tunen :cool:


\tikzset{external/system call={lualatex
\tikzexternalcheckshellescape -halt-on-error -interaction=batchmode
-jobname "\image" "\texsource"}}

humpenjack
21-10-2013, 06:40
hi,

also wie gesagt, du kannst auch datenfiles mit pgfplots direkt plotten. wie steht in der anleitung. ist es eine datei mit nur x,y werten dann geht das einfach mit


\addplot file {daten.dat};

Hhmmm, ich bin mir fast sicher, dass ich dies schon mal früher in dem Handbuch gelesen hatte und es damals nicht funktionieren wollte - jetzt tut es auf anhieb, auch mit den gewünschten options. Jetzt kann ich mir doch noch mal überlegen, ob ich die meisten der Graphen nicht noch mal ändere, könnte dadurch ja doch schneller werden. Auf der anderen Seite, bald sollte die Arbeit fertig sein, lohnt fast schon nicht mehr.

Viele Dank Bobmalaria für die schnelle und ausführliche Hilfe!