
예를 들어 왼쪽 이미지의 작은 파란색 직사각형 모서리와 오른쪽 이미지의 축 환경 모서리와 같이 하위 그림 환경에 배치된 두 개의 다른 tikz 도면 사이에 선을 그리려고 합니다.
두 수치가 매우 커지므로 externalize
. 그러므로 나는 subfig
도서관이 아닌 도서관을 이용하고 싶습니다 groupplots
.
remember picture
및 키워드를 사용하면 작동할 것이라고 생각했지만 첫 번째 시도에서는 오류만 발생했기 때문에 및 overlay
과 충돌이 발생할 수 있습니다 . 이미 좋은 설명을 찾았어요remember picture
externalize
직사각형의 모서리를 참조하는 방법.
샘플 사진에 표시된 대로 선을 그릴 수 있나요? externalize
and 의 조합이 가능합니까 (그렇지 않은 경우 오버레이 이미지를 '외부화'할 필요는 없지만 and before 및 no 를 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}