Daten zeilenweise darstellen mit pgfplots

Daten zeilenweise darstellen mit pgfplots

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:

Bildbeschreibung hier eingeben

Leider erhalte ich folgende Fehlermeldung:

Mathefehler im Paket PGF: Die Eingabe „x“ konnte leider nicht als Gleitkommazahl analysiert werden.

(Interessanterweise -interaction=nonstopmodewird 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

\pgfplotstabletransposeDas 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 colnamesgrundsä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 xrowund verwendet, yrowum einer möglichen Verwirrung () vorzubeugen , da ich die internen Vorgänge usw. x=x,y=ynicht kenne .\pgfplotstable

Bildbeschreibung hier eingeben

verwandte Informationen