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:
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=nonstopmode
la trama se genera como se desea, pero el error es molesto...)
¿Puedo saber de alguna manera pgfplots
que la primera columna contiene los títulos de las filas para eliminar los mensajes de error?
Respuesta1
Es necesario entrenar \pgfplotstabletranspose
para 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 colnames
bá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é xrow
y yrow
para evitar una posible confusión ( x=x,y=y
), ya que no conozco las partes internas de \pgfplotstable
etc.