
¿Alguno de ustedes conoce el formato estándar para pgfplots
gráficos tomados de archivos externos (y también el tipo de archivo aceptado, por ejemplo txt
, dat
) y qué debe incluirse \addplot
para que los datos se tomen de ese archivo exacto?
Gracias por cualquier ayuda.
Respuesta1
Creo que los archivos de texto sin formato son lo único compatible, pero la extensión del archivo es la que quieras,
.txt
,.dat
,.csv
,.montypython
lo que sea.El formato estándar son columnas delimitadas por espacios en blanco, en el sentido de que el delimitador de columna esperado predeterminado son espacios en blanco ("al menos una pestaña o espacio", para citar el manual). Sin embargo, puede especificar un separador diferente con la
col sep
clave, que puede tener estas opciones diferentes:col sep=space|tab|comma|colon|semicolon|braces|&|ampersand
Entonces, si tienes un archivo de texto con el aspecto
x y 1 1 2 3
entonces puedes hacer
\addplot table {<filename including extension>};
y obtienes una gráfica de y vs. x.
pgfplots
Si no se le indica lo contrario, utilizará la primera columna para los valores de x y la segunda para los valores de y.Si tiene un archivo separado por comas, es decir
x,y 1,1 2,3
entonces necesitas decir
\addplot table[col sep=comma] {<filename including extension>};
Si tiene más de dos columnas, seleccione las columnas que desee para xey con
x=<column name>, y=<column name>
ox index=<number>, y index=<number>
. (Por supuesto, puede utilizar, por ejemplo, el nombre parax
yindex
paray
, si lo desea). Así, por ejemplo,\addplot table[x=x, y=y] {<filename including extension>};
para el primer archivo de ejemplo que se muestra arriba, donde los encabezados de las columnas en realidad son
x
yy
.Si la primera fila contiene solo números,
pgfplots
no la leerá como nombres de columnas, asumiendo que el archivo no tiene una fila de encabezado.- El
<column name>
es el texto escrito en la primera fila, entoncesx
y y` para los ejemplos anteriores. - Es
<number>
el número de columna, pero tenga en cuenta que el conteo comienza en cero, así que para obtener la primera columna,x
hágalox index=0
.
- El
Código de ejemplo, si es de interés:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{filecontents}
\begin{filecontents}{A.dat}
0 0
1 1
2 2
\end{filecontents}
\begin{filecontents}{B.csv}
0,1
1,2
2,3
\end{filecontents}
\begin{filecontents}{C.montypython}
foo bar baz
0 2 3
1 3 4
2 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table {A.dat};
\addplot table[col sep=comma] {B.csv};
\addplot table[x=foo, y=bar] {C.montypython};
\addplot table[x index=0, y index=2] {C.montypython};
\legend{A,B,C1,C2}
\end{axis}
\end{tikzpicture}
\end{document}