Aplicar desplazamiento a (eje actual.izquierda del origen)

Aplicar desplazamiento a (eje actual.izquierda del origen)

Estaba tratando de mejorar la solución en¿Dibujar líneas en una trama y darles una etiqueta?usando la respuesta de Jake enCómo acceder a \xmin, \xmax, \ymin, \ymax desde el entorno del eje PGFplots. Entonces, la respuesta de Jake produce la línea de puntos marrón (el eje x) con

(current axis.left of origin) -- (current axis.right of origin)

Pensé que un uso simple de tikzla calcbiblioteca me permitiría ajustar la posición vertical de la línea horizontal. Si quiero una línea horizontal en y=12, por ejemplo, simplemente uso

($(current axis.left of origin)+(axis cs: 0,12)$) -- ($(current axis.right of origin)+(axis cs: 0,12)$)

donde he aplicado un + (axis cs: 0,12)y lo mismo para la otra coordenada.

Bueno, eso es genial en teoría, pero no funciona. En cambio, produce la línea discontinua en rojo (que es sólo la mitad de la línea deseada):

ingrese la descripción de la imagen aquí

Notas:

  • En lugar de hacer cálculos de coordenadas, también intenté aplicar shift={(axis cs: 0,12)}la opción pero eso no tuvo ningún efecto en el resultado.

Código:

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};
    
    \draw [ultra thick, dotted, draw=brown] 
        (current axis.left of origin) -- 
        (current axis.right of origin);
        
    \draw [ultra thick, dashed, draw=red] 
        ($(current axis.left of origin) +(axis cs: 0,12)$) -- 
        ($(current axis.right of origin)+(axis cs: 0,12)$);
\end{axis}
\end{tikzpicture}
\end{document}

Respuesta1

Realmente no sé por qué, pero esto funciona para mí.

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.10}

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};

    \draw [ultra thick, dotted, draw=brown] 
        (current axis.left of origin) -- 
        (current axis.right of origin);

    \draw [ultra thick, draw=red] 
        ($(current axis.left of origin)-(axis cs:0,-12)$) -- 
        ($(current axis.right of origin)+(axis cs:0,12)$);
\end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada