Estoy usando TikZ y pgfplots por primera vez. (Lo estoy usando para poder enviar notas de clase a los estudiantes de una clase de Cálculo que estoy enseñando). Tengo una gráfica con una asíntota inclinada. Antes de poder usar pgfplots para el gráfico, necesito algunos ajustes solo para las líneas del gráfico.
Vi en otra publicación que shorten <=2ex, shorten >=2ex
acortaría una línea en cada extremo en 2ex. Este comando acortó la línea vertical pero no la línea inclinada. Quiero puntas de flecha en ambas líneas; están en la línea vertical pero no en la línea inclinada. Quiero que las líneas estén etiquetadas en la misma dirección que las líneas... pero fuera de la línea. Entonces, necesito mover una etiqueta hacia arriba y otra hacia la derecha. Como arctan(3/2) = 56,31 grados, utilicé rotate=56.31
en las opciones para el nodo. ¿Existe un comando "inclinado" para dibujar dichas etiquetas en la misma dirección que la línea? Una cosa más. La etiqueta "y" para el eje y está demasiado cerca de la línea vertical x=3/2. ¿Cómo ajusto su posición? (Tampoco me gusta la posición de la "x" para el eje 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}
Respuesta1
La razón por la que los shorten
comandos no parecen funcionar de manera confiable es porque no puedes ver los finales de las líneas: están fuera del área de la trama y están recortadas. Para ver las líneas completas, agregue clip=false
a sus axis
opciones.
Yo abordaría esto de manera diferente: en lugar de usar \draw
comandos, puedes usar gráficos "reales" con el \addplot
comando. De esta manera, puedes especificar las ecuaciones directamente, en lugar de tener que calcular de antemano el ángulo de rotación.
\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}
Respuesta2
Puedes usar la sloped
opción en lugar de calcular el ángulo:
Notas:
- También reemplacé las fracciones de listones con a
\frac
porque creo que se ve mucho mejor. - Para obtener las etiquetas de los ejes en las puntas, puedes usar el
Axis Labels At Tip
estilo que extraje deCómo escalar correctamente una imagen TikZ/PGF que tiene un `\begin{axis}...\end{axis}`. - La razón por la que no había puntas de flecha en ambos extremos se puede ver si configura
clip=false
. Las líneas estaban mucho más allá del rango mostrado. Por lo tanto, puede editar las coordenadas para que los puntos finales de las líneas estén dentro del rango o simplemente aumentar la cantidad con la que acorta la línea. En el MWE a continuación aumenté lasshorten
cantidades porque era más sencillo que calcular las coordenadas apropiadas para mantener la misma pendiente y posición.
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}