
Ich versuche, Linien zwischen zwei verschiedenen Tikz-Zeichnungen zu zeichnen, die in Unterfigurenumgebungen platziert sind, beispielsweise die Ecken des kleinen blauen Rechtecks im linken Bild und die Ecken der Achsenumgebung des rechten Bildes.
Da die beiden Abbildungen sehr groß werden, muss ich sie mit exportieren externalize
. Daher möchte ich auch die subfig
Bibliothek verwenden und nicht groupplots
.
remember picture
Ich dachte, es würde mit den Schlüsselwörtern und funktionieren , aber die ersten Versuche brachten nur Fehler, daher befürchte ich, dass es einen Konflikt mit und overlay
geben könnte . Ich habe bereits eine gute Beschreibung gefundenremember picture
externalize
So verweisen Sie auf die Ecken eines Rechtecks.
Ist es möglich, Linien wie im Beispielbild angegeben zu zeichnen? Ist dies in Kombination aus externalize
und möglich (falls nicht, würde ich und vor und kein subfig
bevorzugen , obwohl das Overlay-Bild nicht „externalisiert“ werden muss)?groupplots
externalize
subfig
externalize
Hier ist mein Minimalbeispiel:
\documentclass[parskip]{scrartcl}
\usepackage{tikz,pgfplots,subfig, lipsum}
% \usetikzlibrary{external}
% \tikzexternalize[figure list=true]
\begin{document}
\lipsum[1]
\begin{figure}[h]
\centering
\subfloat[Overview.]{
\begin{tikzpicture}[trim axis left, trim axis right]
\begin{axis}[domain=-10:10,x post scale=0.5]
\addplot+[red,mark=none]{x^2};
\draw[fill=blue,opacity=0.3] (axis cs:-2,-0.5) rectangle (axis cs:2,5);
\end{axis}
\end{tikzpicture}
}\quad
\subfloat[Detail.]{
\begin{tikzpicture}[trim axis left, trim axis right]
\begin{axis}[xmin=-2,xmax=2,ymin=-0.5,ymax=5,domain=-2:2,mark=none]
\addplot+[red,mark=none]{x^2};
\end{axis}
\end{tikzpicture}
}
\caption{Curve.}
\end{figure}
\lipsum[2]
\end{document}
Vielen Dank!
Antwort1
Der Vollständigkeit halber stelle ich eine Kurzversion des groupplots
-Ansatzes mit gefälschten Untertiteln und möglicher Externalisierung vor. Es gibt verschiedene Ansätze (siehe Kommentare unter der Frage), aber dieser schien mir der einfachste. Für dieOriginalgrafikMir ist aufgefallen, dass zusätzliche Zeilen das Ganze nur chaotischer machen …
Und hier der Code:
\documentclass[parskip]{scrartcl}
\usepackage{tikz,pgfplots,subfig, lipsum}
\usetikzlibrary{pgfplots.groupplots}
\usetikzlibrary{fit,intersections,}
\makeatletter
\tikzset{ % fitting node, see http://goo.gl/KOvpQ
fitting node/.style={
inner sep=0pt,
fill=none,
draw=none,
reset transform,
fit={(\pgf@pathminx,\pgf@pathminy) (\pgf@pathmaxx,\pgf@pathmaxy)}
},
reset transform/.code={\pgftransformreset}
}
\makeatother
% \usetikzlibrary{external}
% \tikzexternalize[figure list=true]
\begin{document}
\lipsum[1]
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{groupplot}[domain=-10:10,group style={group size=2 by 1,vertical sep=0.7cm,horizontal sep=1.05cm,xlabels at=edge bottom,ylabels at=edge left},x label style={font=\footnotesize}]
\nextgroupplot[x post scale=0.5,xlabel={(a) Overview.},]
\addplot+[red,mark=none]{x^2};
\draw[fill=blue,opacity=0.3] (axis cs:-2,-0.5) rectangle (axis cs:2,5) node[fitting node] (rect) {};
\nextgroupplot[xmin=-2,xmax=2,ymin=-0.5,ymax=5,domain=-2:2,mark=none,x post scale=0.9, xlabel={(b) Detail.}]
\addplot+[red,mark=none]{x^2};
\end{groupplot}
\draw[dashed] (rect.north west) -- (group c2r1.north west);
\draw[dashed] (rect.south west) -- (group c2r1.south west);
\path[name path=lineA] (rect.south east) -- (group c2r1.south east);
\path[name path=lineB] (rect.north east) -- (group c2r1.north east);
\path[name path=lineC] (group c2r1.north west) -- (group c2r1.south west);
\draw [dashed,name intersections={of=lineA and lineC, by=pA}] (rect.south east) -- (pA);
\draw [dashed,name intersections={of=lineB and lineC, by=pB}] (rect.north east) -- (pB);
\draw [dashed,gray!90,opacity=0.7] (pA) -- (group c2r1.south east);
\draw [dashed,gray!90,opacity=0.7] (pB) -- (group c2r1.north east);
\end{tikzpicture}
\end{figure}
\lipsum[2]
\end{document}