Маркировка наклонной асимптоты

Маркировка наклонной асимптоты

Я впервые использую TikZ и pgfplots. (Я использую его, чтобы отправлять заметки студентам на занятиях по исчислению, которые я преподаю.) У меня есть график с наклонной асимптотой. Прежде чем я смогу использовать pgfplots для графика, мне нужно внести некоторые корректировки только для линий на графике!

Я видел в другом посте, что shorten <=2ex, shorten >=2exукорачивает линию на каждом конце на 2ex. Эта команда укорачивает вертикальную линию, но не наклонную линию. Мне нужны стрелки на обеих линиях; они находятся на вертикальной линии, но не на наклонной линии. Мне нужны линии, помеченные в том же направлении, что и линии... но вне линии. Поэтому мне нужно переместить одну метку вверх и одну метку вправо. Поскольку arctan(3/2) = 56,31 градуса, я использовал rotate=56.31в параметрах для узла. Есть ли команда "slant" для рисования таких меток в том же направлении, что и линия? Еще один момент. Метка "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, который я извлек изКак правильно масштабировать изображение TikZ/PGF, имеющее `\begin{axis}...\end{axis}`.
  • Причину, по которой не было наконечников стрелок на обоих концах, можно увидеть, если задать 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}

Связанный контент