
Con la ayuda de¿Cómo hago zoom en un área rectangular en pgfplots agregando un fondo gris incluso para las etiquetas de los ejes?yNo hay contenido en zoom Tikz espíaHe podido sacar el máximo provecho de lo que quiero. Utilizando el modo independiente, este ejemplo se ve así:
He utilizado el siguiente código "independiente" para generar la imagen.
% Source 1: https://tex.stackexchange.com/questions/102477/
% Source 2: https://tex.stackexchange.com/questions/62953/
\documentclass[tikz,border=2pt,png]{standalone}
\usepackage{pgfplots}
%\usepackage{tikz}% no needs since pgfplots loads already it
\pgfplotsset{compat=1.7} % Set the pgf plots to a current version
\usetikzlibrary{spy}
\begin{document}
\tikzset{new spy style/.style={spy scope={%
magnification=5,
size=1.25cm,
connect spies,
every spy on node/.style={
rectangle,
draw,
},
every spy in node/.style={
draw,
rectangle,
}
}
}
}
\begin{tikzpicture}[new spy style]
\begin{axis}[%
height=0.3\textwidth,
width=0.96\textwidth,
name = BG,
unbounded coords=jump,
scale only axis,
xmin=-3.68158764150225, xmax=4.05456770289782,
ymin=-1.44575077919192, ymax=1.15200357048622,
axis lines*=left,
axis equal image]
\addplot [
color=blue,
solid,
mark=+,
mark options={solid},
]
{sin(deg(x))};
\addplot [
color=red,
solid,
mark=*,
mark options={solid},
]
{sin(deg(x))+0.1};
\addplot [
color=green,
solid,
mark=x,
mark options={solid},
]
{sin(deg(x))-0.1};
\coordinate (spypoint) at (axis cs:0,0.0);
\coordinate (spyviewer) at (axis cs:1.7,-.5);
\end{axis}
%using axis coordinates and without "spy style" defined above
\spy[width=2cm,height=3cm] on (spypoint) in node [fill=white] at (spyviewer);
\end{tikzpicture}%
\end{document}
Como puede ver, he podido establecer las coordenadas para \spy en relación con el eje (cerca del final del código). Sin embargo no he podido definir el tamaño de la misma forma. Como consecuencia, el gráfico puede verse diferente si se utiliza dentro de un documento principal.
Estoy bastante seguro de que esto tiene que ver con mi uso de "alto" y "ancho" en la configuración del eje y/o el uso de "cm" en el comando \spy.
Mi solución preferida sería algo en lo que use "\spy" de manera que pueda referirme al sistema de coordenadas del eje para determinar su tamaño también. Cualquier intento de mover el comando "\spy" dentro del "eje" hasta ahora me ha fallado.
La motivación detrás de esta pregunta se puede ver en las dos imágenes siguientes utilizando mis datos reales.
Si se compila de forma independiente:
y para comparar cuando se compila en el documento principal:
Respuesta1
Como toda la imagen está escalada, \textwidth
pensé que sería bueno usar esto también para escalar \spy
el cuadro. Entonces reemplazando
\spy[width=2cm,height=3cm] on (spypoint) in node [fill=white] at (spyviewer);
con
\spy[width=0.2\textwidth,height=0.3\textwidth] on (spypoint) in node [fill=white] at (spyviewer);
era todo lo que había que hacer. Si el cuadro ahora está colocado y dimensionado correctamente en el standalone
entorno, su tamaño y posición también se conservan en el documento principal.