
Com a ajuda deComo faço para ampliar uma área retangular em pgfplots adicionando um fundo cinza mesmo para os rótulos dos eixos?eNenhum conteúdo no zoom Tikz espiãoConsegui obter o máximo do que desejo. Usando sozinho, este exemplo fica assim:
Usei o seguinte código "independente" para gerar a imagem.
% 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 você pode ver, consegui definir as coordenadas para \spy em relação ao eixo (próximo ao final do código). Porém não consegui definir o tamanho da mesma forma. Como consequência, o gráfico pode parecer diferente se usado dentro de um documento principal.
Tenho certeza de que isso tem a ver com o uso de "altura" e "largura" na configuração do eixo e/ou com o uso de "cm" no comando \spy.
Minha solução preferida seria algo em que eu usasse "\spy" de uma forma que pudesse me referir ao sistema de coordenadas do eixo para determinar seu tamanho também. Qualquer tentativa de mover o comando "\ spy" dentro do "eixo" falhou.
A motivação por trás desta questão pode ser vista nas duas imagens a seguir usando meus dados reais.
Se compilado como independente:
E para comparação quando compilado no documento principal:
Responder1
Como a imagem inteira é dimensionada, \textwidth
imaginei que seria bom usar também esta \spy
caixa para dimensionar. Então substituindo
\spy[width=2cm,height=3cm] on (spypoint) in node [fill=white] at (spyviewer);
com
\spy[width=0.2\textwidth,height=0.3\textwidth] on (spypoint) in node [fill=white] at (spyviewer);
era tudo o que precisava ser feito. Se a caixa agora estiver posicionada e dimensionada corretamente no standalone
ambiente, seu tamanho e posição também serão preservados no documento principal.