경사 점근선에 라벨 붙이기

경사 점근선에 라벨 붙이기

저는 TikZ와 pgfplots를 처음으로 사용하고 있습니다. (제가 가르치는 미적분학 수업에서 학생들에게 수업 노트를 보낼 수 있도록 사용하고 있습니다.) 경사 점근선 그래프가 있습니다. 그래프에 pgfplots를 사용하기 전에 그래프의 선에만 몇 가지 조정이 필요합니다!

shorten <=2ex, shorten >=2ex나는 각 끝의 줄을 2ex만큼 줄이는 다른 게시물을 보았습니다 . 이 명령은 수직선을 줄였으나 기울어진 선은 줄이지 않았습니다. 나는 두 줄 모두에 화살촉을 원합니다. 그들은 수직선에 있지만 비스듬한 선에는 없습니다. 나는 선과 같은 방향으로 라벨이 붙은 선을 원하지만 ... 선에서 벗어났습니다. 따라서 하나의 레이블을 위로 이동하고 하나의 레이블을 오른쪽으로 이동해야 합니다. arctan(3/2) = 56.31도이므로 rotate=56.31노드 옵션에 사용했습니다 . 선과 같은 방향으로 라벨을 그리는 "기울기" 명령이 있나요? 하나 더. y축의 레이블 "y"가 수직선 x=3/2에 너무 가깝습니다. 위치를 어떻게 조정하나요? (저는 x축의 "x" 위치도 마음에 들지 않습니다.)

\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}


\begin{document}    

\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
    axis lines=middle,
    xmin=-15,xmax=15,
    xlabel=$x$,ylabel=$y$,
    ymin=-10,ymax=10,
    restrict y to domain=-12:12,
    enlargelimits={abs=1cm},
    axis line style={latex-latex},
    ticklabel style={font=\tiny,fill=white},
    xtick={\empty},ytick={\empty},
]

\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] (-13,-17) -- (13,22) node[right,rotate=56.31,pos=0.1]{$\scriptstyle{y=(3/2)x+5/2}$};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,-1}}) node[right,rotate=90,pos=0.5]{$\scriptstyle{x=3/2}$};
\end{axis}
\end{tikzpicture}

\end{document}

답변1

명령이 안정적으로 작동하지 않는 이유 shorten는 선의 끝을 볼 수 없기 때문입니다. 선은 플롯 영역 외부에 있고 잘립니다. 전체 줄을 보려면 옵션 clip=false에 추가하세요 axis.

나는 이것을 다르게 접근할 것입니다. 명령을 사용하는 대신 명령 \draw과 함께 "실제" 플롯을 사용할 수 있습니다 \addplot. 이렇게 하면 회전 각도를 미리 계산할 필요 없이 방정식을 직접 지정할 수 있습니다.

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}


\begin{document}    

\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
clip=false,
    axis lines=middle,
    xmin=-15,xmax=15,
    domain=-15:15, samples=50,
    xlabel=$x$,ylabel=$y$,
    ymin=-10,ymax=10,
    restrict y to domain=-12:12,
    enlargelimits={abs=1cm},
    axis line style={latex-latex},
    ticklabel style={font=\tiny,fill=white},
    xtick={\empty},ytick={\empty},
]

\addplot [dashed, latex-latex] {(3/2)*x+5/2} node [pos=0.25, anchor=south, font=\footnotesize, sloped] {$y=(3/2)x+5/2$};
\addplot [dashed, latex-latex] (1.5,x) node [pos=0.25, anchor=north, font=\footnotesize, sloped] {$x=3/2$};
\end{axis}
\end{tikzpicture}

\end{document}

답변2

sloped각도를 계산하는 대신 옵션을 사용할 수 있습니다 .

여기에 이미지 설명을 입력하세요

노트:

  • \frac나는 또한 훨씬 더 좋아 보인다고 생각하여 판금 부분을 로 교체했습니다 .
  • 팁에서 축 레이블을 얻으려면 Axis Labels At Tip내가 추출한 스타일을 사용할 수 있습니다.`\begin{axis}...\end{axis}`가 있는 TikZ/PGF 그림의 크기를 올바르게 조정하는 방법.
  • 양쪽 끝에 화살촉이 없는 이유는 로 설정하면 알 수 있습니다 clip=false. 선이 표시된 범위를 훨씬 벗어났습니다. 따라서 좌표를 편집하여 선의 끝점을 범위에 넣거나 선을 줄이는 양을 늘릴 수 있습니다. 아래 MWE에서는 shorten동일한 경사와 위치를 유지하기 위해 적절한 좌표를 계산하는 것보다 간단하므로 양을 늘렸습니다.

암호:

\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

%% https://tex.stackexchange.com/questions/17438/how-to-properly-scale-a-tikz-pgf-picture-which-has-a-beginaxis-endaxis
%%
\pgfkeys{/pgfplots/Axis Labels At Tip/.style={
        xlabel style={
            at={(current axis.right of origin)}, 
            xshift=1.5ex, anchor=center
        },
        ylabel style={
            at={(current axis.above origin)}, 
            yshift=1.5ex, anchor=center
        }
    }
}

\begin{document}    

\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
    axis lines=middle,
    xmin=-15,xmax=15,
    xlabel=$x$,ylabel=$y$,
    ymin=-10,ymax=10,
    restrict y to domain=-12:12,
    enlargelimits={abs=1cm},
    axis line style={latex-latex},
    ticklabel style={font=\tiny,fill=white},
%    xtick={\empty},ytick={\empty},
    Axis Labels At Tip,
    %clip=false
]

\draw[dashed,latex-latex,shorten <=4ex, shorten >=15ex] (axis cs: -13,-17) -- (axis cs: 13,22) node[right,sloped, above,pos=0.15]{$y=\frac{3}{2}x+ \frac{5}{2} $};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,0}}) node[right,rotate=90, below, pos=0.65]{$x= \frac{3}{2}$};
\end{axis}
\end{tikzpicture}

\end{document}

관련 정보