Tengo algunos datos de algunos experimentos numéricos almacenados en algunos archivos csv, que leo en LaTeX usando
\pgfplotstableread{Results/test.csv}\data
Estos datos constan de coordenadas x, y, z y ahora quiero trazar la curva de nivel para z=1
. Varias personas sugieren el uso de gnuplot, por ejemploTrazar una curva de nivel, que he intentado adoptar para puntos de datos con
\addplot3 [contour gnuplot={levels={1},labels=false,draw color=black}] table[x={x}, y={y}, z={z}]{\data};
que compilo con --shell-escape. Sin embargo, esto no funciona y arroja el error.
ExponentialSDE.tex (línea 497) Error de pgfplots del paquete: Lo sentimos, el procesamiento del flujo de entrada no generó marcadores de fin de línea de escaneo; el archivo temporal generado para 'contorno externo' no contiene ninguno de ellos (lo que indica que la estructura de la matriz se ha perdido).
Leí que un problema típico que genera este error es la falta de gnuplot (lo cual tiene sentido). Para mi caso, gnuplot está instalado, esta es la salida del terminal cuando ejecutognuplot
>>gnuplot
G N U P L O T
Version 5.2 patchlevel 6 last modified 2019-01-01
Copyright (C) 1986-1993, 1998, 2004, 2007-2018
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
¿Tiene alguna sugerencia sobre lo que estoy haciendo mal? y como puedo obtener la curva de nivel?
MWE completo
\documentclass[11pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\pgfplotstableread{
x y z
-1 -1 2
-1 0 1
-1 1 2
0 -1 1
0 0 0
0 1 1
1 -1 2
1 0 1
1 1 2
}{\data}
\begin{document}
%Not working
\begin{tikzpicture}
\begin{axis}[view={0}{90}]
\addplot3 [contour gnuplot={levels={1},labels=false,draw color=black}] table[x={x}, y={y}, z={z}]{\data};
\end{axis}
\end{tikzpicture}
%Test for pgfplotstable is properly read
\begin{tikzpicture}
\begin{axis}[]
\addplot table[x={x}, y={y}]{\data};
\end{axis}
\end{tikzpicture}
\end{document}
Respuesta1
Parece que el mío compat=newest
es más nuevo que el tuyo porque en mi caso me indica precisamente qué hacer:
! Error de pgfplots del paquete: Lo sentimos, el procesamiento del flujo de entrada no generó marcadores de fin de línea de escaneo; el archivo temporal generado para 'contorno externo' no contiene ninguno de ellos (lo que indica que la estructura de la matriz se ha perdido). Para solucionar este problema, tiene las siguientes opciones: - Insertar marcadores de fin de línea de escaneo en sus datos de entrada (es decir, líneas vacías), - Proporcionar dos de las tres opciones 'mesh/rows=, mesh/cols=, mesh/num puntos='.
¿Quién se resistiría a seguir una instrucción tan clara? ;-) Asique
- agregó líneas vacías a los datos y
mesh/rows=3, mesh/cols=3
al comando de trama
y consiguió
\documentclass[11pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\pgfplotstableread{
x y z
-1 -1 2
-1 0 1
-1 1 2
0 -1 1
0 0 0
0 1 1
1 -1 2
1 0 1
1 1 2
}{\data}
\begin{document}
%Now working
\begin{tikzpicture}
\begin{axis}[view={0}{90}]
\addplot3 [contour gnuplot={levels={1},labels=false,draw color=black},
mesh/rows=3, mesh/cols=3] table[x={x}, y={y}, z={z}]{\data};
\end{axis}
\end{tikzpicture}
\end{document}