Graphen aus csv

Tabellen und Grafiken erstellen und anordnen


kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Graphen aus csv

Beitrag 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!
Dateianhänge
test.zip
(1.03 KiB) 235-mal heruntergeladen

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Beitrag von kannstmasehn »

Danke sehr! Funktioniert.

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Beitrag 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?

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Beitrag 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!

Antworten