내 것부터 시작해서오래된 질문일부 매개변수를 수정한 경우 스파이의 중심이 내부에 있지 않고 해당 지점에 더 가깝기
때문에 이유를 이해하지 못했습니다 (이 값은 다른 컴파일 후에 제공됩니다).$(4,3.5)$
$(3.2,3)$
\spy[green!70!black,size=2cm] on (3.2,3) in node [fill=white] at (8,1);
주요 질문이 나온 후:
TikZ 라이브러리를 사용하면 동일한 방향의 이 이미지와 같이 다양한 직사각형 확대/축소 시퀀스를 가질 수 있습니까 \usetikzlibrary{spy}
(JAMES STEWART 7판의 CALCULUS 책에서 가져옴),
줌 라벨을 이것과 같이 가질 수 있는 곳은 어디입니까?질문(@Tobi 사용자의 매우 훌륭한 답변)?
여기에 상대 스크린샷과 함께 MWE를 추가합니다.
\documentclass{article}
\usepackage{tikz,amsmath,xcolor}
\usetikzlibrary{patterns}
\usepackage{pgfplots}
\usetikzlibrary{spy}
\begin{document}
\begin{tikzpicture}[spy using outlines={circle=.5cm, magnification=3, size=.5cm, connect spies}]
\tikzset{
hatch distance/.store in=\hatchdistance,
hatch distance=10pt,
hatch thickness/.store in=\hatchthickness,
hatch thickness=2pt
}
\makeatletter
\pgfdeclarepatternformonly[\hatchdistance,\hatchthickness]{flexible hatch}
{\pgfqpoint{0pt}{0pt}}
{\pgfqpoint{\hatchdistance}{\hatchdistance}}
{\pgfpoint{\hatchdistance-1pt}{\hatchdistance-1pt}}%
{
\pgfsetcolor{\tikz@pattern@color}
\pgfsetlinewidth{\hatchthickness}
\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
\pgfpathlineto{\pgfqpoint{\hatchdistance}{\hatchdistance}}
\pgfusepath{stroke}
}
\makeatother
\begin{axis}[
xmin=-4,xmax=4,
xlabel={},
ymin=-3,ymax=3,
axis on top,
legend style={legend cell align=right,legend plot pos=right}]
\begin{scope}
\spy[green!70!black,size=2cm] on (3.2,3) in node [fill=white] at (8,1);
\end{scope}
\addplot[color=gray,domain=-4:4,samples=100] {x^3};
\end{axis}
\end{tikzpicture}
\end{document}
답변1
당신이 링크한 답변은 그림을 반복하고 크기를 조정하고 잘라낸다고 말하는 것 같습니다. 이 내에서는 pfgfplots
결국 성능 문제가 발생할 수 있습니다(단순한 그래프에서는 아니더라도). 따라서 \savebox
es와 path picture
s를 사용하여 다음을 얻을 수 있습니다.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\newsavebox\Axis
\begin{document}
\savebox\Axis{
\begin{tikzpicture}[declare function={f(\x)=pow(\x-1.5,3)-\x+3.5;}]
\begin{axis}[
xmin=-1,xmax=4,xlabel={$x$},xtick=\empty,
ymin=-1,ymax=4,ylabel={$y$},ytick=\empty,
axis lines=middle]
\addplot[color=cyan,thick,domain=-4:4,samples=51,smooth] {f(x)};
\node[circle,fill,inner sep=1.5pt,cyan] at (2.2,{f(2.2)}){};
\end{axis}
\end{tikzpicture}}
\begin{tikzpicture}
\node{\usebox\Axis};
\node[draw,minimum size=0.5cm,purple] (s1) at (1,0.2){};
\node[draw,minimum size=1cm,purple,
path picture={\path (-1*2,-0.2*2) node[scale=2]{\usebox\Axis};}] (s1')
at (2,0.2){};
\node[draw,minimum size=0.5cm,purple] (s2) at (2,0.2){};
\node[draw,minimum size=1cm,purple,
path picture={\path (-1*3,-0.2*3) node[scale=3]{\usebox\Axis};}] (s2')
at (3.5,0.2){};
\foreach \X in {1,2}
{\draw[dashed,purple] (s\X.north west) -- (s\X'.north west)
(s\X.south west) -- (s\X'.south west);}
\end{tikzpicture}
\end{document}
더욱 사용자 친화적으로 만들 수 있다는 점에 유의하세요. 그러나 목표 출력이 무엇인지 생각나게 하는 것에 도달하기 위해 귀하의 코드를 어느 정도 완전히 버려야 했기 때문에 이것을 버전 0.1로 추가합니다.
글쎄요, 원하는 것이 아닌 것 같지만, 원하는 것을 보는 것도 쉽지 않습니다.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usetikzlibrary{calc}
\newsavebox\Axis
\begin{document}
\savebox\Axis{
\begin{tikzpicture}[declare function={f(\x)=pow(\x-1.5,3)-\x+3.5;}]
\begin{axis}[
xmin=-1,xmax=4,xlabel={$x$},xtick=\empty,
ymin=-1,ymax=4,ylabel={$y$},ytick=\empty,
axis lines=middle]
\addplot[color=cyan,thick,domain=-4:4,samples=51,smooth] {f(x)};
\path (0,0) coordinate (O) (2.2,{f(2.2)}) node[circle,fill,inner
sep=1.5pt,cyan] (a){};
\end{axis}
\end{tikzpicture}}
\begin{tikzpicture}[spy node/.style={draw=purple,minimum size=#1*0.5cm,
path picture={{\path (-#1*\myx,-#1*\myy) node[scale=#1]{\usebox\Axis};}}}]
\node[inner sep=0pt,outer sep=0pt]{\usebox\Axis};
\path let \p1=($(a.center)-(current axis.center)$) in \pgfextra{\xdef\myx{\x1}\xdef\myy{\y1}}
(\p1) coordinate (a');
\node[draw,minimum size=0.5cm,purple] (s1) at (a'){};
\node[spy node=2] (s1') at ($(a')+(1,0)$){};
\node[spy node=4] (s4') at ($(a')+(3,0)$){};
\end{tikzpicture}
\end{document}