
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:
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:
Und zum Vergleich bei Kompilierung im Hauptdokument:
Antwort1
Da das gesamte Bild skaliert wird, \textwidth
dachte ich, es wäre schön, dies auch zum Skalieren \spy
des 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 standalone
Umgebung richtig platziert und dimensioniert ist, bleiben ihre Größe und Position auch im Hauptdokument erhalten.