Trazar datos por filas con pgfplots

Trazar datos por filas con pgfplots

Tengo algunos datos almacenados en un archivo que me gustaría trazar con pgfplots. Los datos se almacenan en filas, es decir, el archivo se parece a este:

a  1 2 3 4 5
b  6 7 8 9 0
c  2 4 6 8 0
...

Sin embargo, Pgfplots espera que los datos sean columnas. Para resolver esto, transpongo la tabla usando \pgfplotstabletranspose. Sin embargo, esto parece tener problemas con los títulos de las filas.

El siguiente ejemplo mínimo muestra lo que he logrado hasta ahora.

\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}

El resultado deseado es el siguiente gráfico:

ingrese la descripción de la imagen aquí

Desafortunadamente, aparece el siguiente error:

Error matemático del paquete PGF: no se pudo analizar la entrada 'x' como un número de punto flotante, lo siento.

(Curiosamente, cuando se utiliza, -interaction=nonstopmodela trama se genera como se desea, pero el error es molesto...)

¿Puedo saber de alguna manera pgfplotsque la primera columna contiene los títulos de las filas para eliminar los mensajes de error?

Respuesta1

Es necesario entrenar \pgfplotstabletransposepara mantener los nombres de las columnas.

Agregue una fila ficticia a los datos, que tenga los valores colnames 0 1 2 3 4 (mientras que colnamesbásicamente podría reemplazarse por cualquier cosa). Llama a

\addplot table[x=xrow,y=yrow] {\otherdatatable}; 

(He usado otra macro para la tabla transpuesta. No estoy seguro de si usar la misma macro no sería saludable)

\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}

Utilicé xrowy yrowpara evitar una posible confusión ( x=x,y=y), ya que no conozco las partes internas de \pgfplotstableetc.

ingrese la descripción de la imagen aquí

información relacionada