Ich habe einige Daten in einer Datei gespeichert, die ich mit pgfplots darstellen möchte. Die Daten werden zeilenweise gespeichert, d. h. die Datei sieht ungefähr so aus:
a 1 2 3 4 5
b 6 7 8 9 0
c 2 4 6 8 0
...
Pgfplots erwartet jedoch, dass die Daten spaltenweise vorliegen. Um dieses Problem zu lösen, transponiere ich die Tabelle mit \pgfplotstabletranspose
. Dies scheint jedoch Probleme mit den Zeilentiteln zu haben.
Das folgende Minimalbeispiel zeigt, was ich bisher erreicht habe.
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{
x 1 2 3 4 5
y 1 4 9 16 25
}\datatable;
\pgfplotstabletranspose\datatable{\datatable};
\addplot table {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
Die gewünschte Ausgabe ist das folgende Diagramm:
Leider erhalte ich folgende Fehlermeldung:
Mathefehler im Paket PGF: Die Eingabe „x“ konnte leider nicht als Gleitkommazahl analysiert werden.
(Interessanterweise -interaction=nonstopmode
wird bei der Verwendung der Plot trotzdem wie gewünscht erzeugt, aber der Fehler ist ärgerlich...)
Kann ich irgendwie feststellen pgfplots
, dass die erste Spalte die Zeilentitel enthält, um die Fehlermeldungen loszuwerden?
Antwort1
\pgfplotstabletranspose
Das Beibehalten der Spaltennamen muss trainiert werden .
Fügen Sie den Daten eine Dummy-Zeile hinzu, die die Werte enthält colnames 0 1 2 3 4
(wobei diese colnames
grundsätzlich durch alles ersetzt werden könnten). Rufen Sie die
\addplot table[x=xrow,y=yrow] {\otherdatatable};
(Ich habe für die transponierte Tabelle ein anderes Makro verwendet. Ich bin nicht sicher, ob es sinnvoll wäre, dasselbe Makro zu verwenden.)
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{%
colnames 0 1 2 3 4
xrow 1 2 3 4 5
yrow 1 4 9 16 25
}\datatable;
\pgfplotstabletranspose[colnames from=colnames]\otherdatatable{\datatable};
\addplot table[x=xrow,y=yrow] {\otherdatatable};
\end{axis}
\end{tikzpicture}
\end{document}
Ich habe xrow
und verwendet, yrow
um einer möglichen Verwirrung () vorzubeugen , da ich die internen Vorgänge usw. x=x,y=y
nicht kenne .\pgfplotstable