Seite 1 von 1

Graphen aus csv

Verfasst: Fr 10. Apr 2015, 08:04
von kannstmasehn
Moin,

hier mein Minimalbeispiel:
\documentclass[paper=a4,12pt,version=last]{scrartcl} 
\usepackage{pgfplots} 
\pgfplotsset{compat = newest}
     
\begin{document} 
\begin{tikzpicture} 
\begin{loglogaxis} 
\pgfplotstableread[col sep=comma]{test.csv}
\datatable
\addplot table[y = P5] from \datatable ;
\end{loglogaxis} 
\end{tikzpicture} 
\end{document}
Mit einer modifizierten csv-Datei funktioniert das auch. Ich bekomme aber von dem Programm die angehängte csv-Datei ausgegeben und würde diese gerne verwenden. Bei der modifizierten habe ich den Text der ersten Zeilen gelöscht und bei den Werten die Spalte 'Name' mit 'DP 0, DP 1,...'. Damit funktioniert es auch. Eine gewisse Automatisierung, ohne dass ich diese Inhalte löschen muss, wäre schon wünschenswert.

Die Fehlermeldung lautet, wenn ich die Inhalte nicht lösche:

! Illegal parameter number in definition of \pgfplotstable@loc@TMPa.


Wie kann ich das ohne Löschungen realisieren?


Vielen Dank im Voraus und einen schönen sonnigen Tag noch!

Verfasst: Fr 10. Apr 2015, 09:56
von esdd
Wenn die ersten 6 Zeilen der Inputdatei ignoriert werden sollen, dann erreichst Du das mit der Option skip first n=6.

Wenn kein Spalte für x angegeben ist, wird die jeweils erste genommen. Nachdem Du die Spalte "Name" gelöscht hast, ist das in der modifizierten Datei dann die Spalte "P1". Gibst Du nun x=P1 direkt an, kannst Du Dir das Löschen der ersten Spalte sparen.
\documentclass[12pt,version=last]{scrartcl} 
\usepackage{pgfplots,pgfplotstable} 
\pgfplotsset{compat=newest} 

\begin{document} 
\begin{tikzpicture} 
\begin{loglogaxis} 
\pgfplotstableread[col sep=comma,skip first n=6]{test.csv}\datatable 
\addplot table[x=P1,y=P5] from \datatable ; 
\end{loglogaxis} 
\end{tikzpicture} 
\end{document} 
Gruß
Elke

Verfasst: Fr 10. Apr 2015, 10:00
von kannstmasehn
Danke sehr! Funktioniert.

Verfasst: Fr 10. Apr 2015, 10:46
von kannstmasehn
Eine Frage noch: Wenn in der .csv keine Daten angegeben sind wie zB bei ",,,", was ja eigentlich "0" wäre, wie kann ich das auch als 0 zeichnen lassen? Also im Ausgabeprogramm steht für einen bestimmten Fall die 0, wird aber in der .csv lediglich mit nichts eingetragen. Gibt es da eine Möglichkeit, dass ich vielleicht diese leere Zelle mit 0 schreibe?

Verfasst: Fr 10. Apr 2015, 14:11
von esdd
Wie lässt Du in loglogaxis eine 0 zeichnen? Ich verwende im folgenden deshalb semilogxaxis. Dann lässt sich das mit y filter/.code. Für die Überprüfung, ob der y-Wert leer ist, verwende ich dabei einfach das bei Verwendung einer KOMA-Script Klasse sowieso definierte \ifstr.
\documentclass[12pt,version=last]{scrartcl} 
\usepackage{pgfplots} 
\pgfplotsset{compat=newest} 

\begin{document} 
\begin{tikzpicture} 
\begin{semilogxaxis}[
  y filter/.code={\ifstr{#1}{}{\pgfmathparse{0}}{}}
]
\pgfplotstableread[col sep=comma,skip first n=6]{test.csv}\datatable 
\addplot table[x=P1,y=P20] from \datatable ; 
\end{semilogxaxis} 
\end{tikzpicture} 
\end{document}
Gruß
Elke

Verfasst: Di 14. Apr 2015, 07:24
von kannstmasehn
Ja war dumm von mir. Das hilft mir aber auch so weiter. Habe die Punkte, die 0 sind, dann einfach auf 0,1 gesetzt.

Der Vollständigkeit halber:
\documentclass[paper=a4,12pt,version=last]{scrartcl} 
\usepackage{pgfplots} 
\pgfplotsset{compat = newest}
     
\begin{document} 
\begin{tikzpicture} 
\begin{loglogaxis}[ 
   y filter/.code={\ifstr{#1}{}{\pgfmathparse{0.1}}{}} 
]  
\pgfplotstableread[col sep=comma,skip first n=6]{test.csv}\datatable 
\addplot table[x=P1,y=P5] from \datatable ; 
\end{loglogaxis} 
\end{tikzpicture} 
\end{document}

Danke dir!