
サブフィグ環境に配置された 2 つの異なる tikz 図面の間に線を描画しようとしています。たとえば、左側の画像の小さな青い四角形の角と、右側の画像の軸環境の角です。
2 つの図は非常に大きくなるため、 を使用してエクスポートする必要があります。したがって、ではなく ライブラリexternalize
も使用したいと思います。subfig
groupplots
remember picture
とキーワードで動作すると思いましたが、最初の試みではエラーしか発生しなかったため、とがoverlay
競合するのではないかと心配しています。すでに適切な説明を見つけました。remember picture
externalize
長方形の角を参照する方法。
externalize
サンプル画像に示されているように線を描くことは可能ですか?とを組み合わせて可能ですかsubfig
(できない場合は、 の前にgroupplots
と を置き、 は不要ですが、オーバーレイ画像を「外部化」する必要はありません)?externalize
subfig
externalize
これが私の最小限の例です:
\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}
どうもありがとう!
答え1
完全を期すために、groupplots
偽のサブキャプションと可能な外部化を備えたアプローチの短縮版を提示します。さまざまなアプローチがありますが(質問のコメントを参照)、これが私にとって最も簡単だと思われます。しかし、オリジナルグラフィック線を追加すると、すべてが乱雑になるだけだと気づきました...
コードは次のとおりです:
\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}