Rotulando uma assíntota inclinada

Rotulando uma assíntota inclinada

Estou usando TikZ e pgfplots pela primeira vez. (Estou usando-o para poder enviar anotações de aula aos alunos de uma aula de Cálculo que estou ensinando.) Tenho um gráfico com uma assíntota inclinada. Antes de poder usar pgfplots para o gráfico, preciso fazer alguns ajustes apenas para as linhas do gráfico!

Vi em outro post que shorten <=2ex, shorten >=2exencurtaria uma linha em cada ponta em 2ex. Este comando encurtou a linha vertical, mas não a linha inclinada. Quero pontas de flecha em ambas as linhas; eles estão na linha vertical, mas não na linha inclinada. Quero as linhas rotuladas na mesma direção das linhas... mas fora da linha. Então, preciso mover um rótulo para cima e outro para a direita. Como arctan(3/2) = 56,31 graus, usei rotate=56.31nas opções do nó. Existe um comando "inclinado" para desenhar esses rótulos na mesma direção da linha? Mais uma coisa. O rótulo "y" para o eixo y está muito próximo da linha vertical x=3/2. Como ajusto sua posição? (Também não gosto da posição do "x" no eixo 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}

Responder1

A razão pela qual os shortencomandos não parecem funcionar de forma confiável é porque você não consegue ver o final das suas linhas: elas estão fora da área de plotagem e estão cortadas. Para ver as linhas completas, adicione clip=falseàs suas axisopções.

Eu abordaria isso de forma diferente: em vez de usar \drawcomandos, você pode usar gráficos "reais" com o \addplotcomando. Dessa forma, você pode especificar as equações diretamente, em vez de ter que calcular previamente o ângulo de rotação.

\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}

Responder2

Você pode usar a slopedopção em vez de calcular o ângulo:

insira a descrição da imagem aqui

Notas:

  • Também substituí as frações de ripas por uma, \fracpois acho que fica muito melhor.
  • Para obter os rótulos dos eixos nas pontas você pode usar o Axis Labels At Tipestilo que extraí deComo dimensionar corretamente uma imagem TikZ/PGF que possui um `\begin{axis}...\end{axis}`.
  • A razão pela qual não havia pontas de seta em ambas as extremidades pode ser vista se você definir clip=false. As linhas estavam muito além do intervalo exibido. Assim, você pode editar as coordenadas para colocar os pontos finais das linhas no intervalo ou apenas aumentar a quantidade com a qual você encurta a linha. No MWE abaixo, aumentei os shortenvalores, pois era mais simples do que calcular as coordenadas apropriadas para manter a mesma inclinação e posição.

Código:

\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}

informação relacionada