TikZ: Wie skaliere ich die Spybox mit dem Tikzpicture?

TikZ: Wie skaliere ich die Spybox mit dem Tikzpicture?

Mit der Hilfe vonWie zoome ich einen rechteckigen Bereich in pgfplots und füge sogar für die Achsenbeschriftungen einen grauen Hintergrund hinzu?UndKein Inhalt im Zoom Tikz SpyIch habe das meiste von dem bekommen, was ich wollte. Im Standalone-Modus sieht dieses Beispiel so aus:

Ausgabe

Ich habe den folgenden „eigenständigen“ Code verwendet, um das Bild zu generieren.

% 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}

Wie Sie sehen, konnte ich die Koordinaten für \spy relativ zur Achse festlegen (nahe dem Ende des Codes). Allerdings konnte ich die Größe nicht auf die gleiche Weise definieren. Daher kann das Diagramm anders aussehen, wenn es in einem Hauptdokument verwendet wird.

Ich bin ziemlich sicher, dass dies mit meiner Verwendung von „Höhe“ und „Breite“ in der Achseneinrichtung und/oder der Verwendung von „cm“ im \spy-Befehl zu tun hat.

Meine bevorzugte Lösung wäre eine, bei der ich "\spy" so verwende, dass ich auf das Koordinatensystem der Achse verweisen kann, um auch deren Größe zu bestimmen. Jeder Versuch, den "\spy"-Befehl innerhalb der "Achse" zu verschieben, ist bisher fehlgeschlagen.


Die Motivation hinter dieser Frage lässt sich aus den folgenden beiden Bildern ersehen, die meine realen Daten verwenden.

Bei eigenständiger Kompilierung: Eigenständige Und zum Vergleich bei Kompilierung im Hauptdokument: Als Teil des Hauptdokuments


Antwort1

Da das gesamte Bild skaliert wird, \textwidthdachte ich, es wäre schön, dies auch zum Skalieren \spydes Felds zu verwenden. Also ersetzte ich

\spy[width=2cm,height=3cm] on (spypoint) in node [fill=white] at (spyviewer); 

mit

\spy[width=0.2\textwidth,height=0.3\textwidth] on (spypoint) in node [fill=white] at (spyviewer); 

war alles, was getan werden musste. Wenn die Box nun in der standaloneUmgebung richtig platziert und dimensioniert ist, bleiben ihre Größe und Position auch im Hauptdokument erhalten.

verwandte Informationen