Aplicar mudança para (eixo atual.esquerda da origem)

Aplicar mudança para (eixo atual.esquerda da origem)

Eu estava tentando melhorar a solução emDesenhar linhas em um gráfico e dar-lhes um rótulo?usando a resposta de Jake emComo acessar \xmin, \xmax, \ymin, \ymax de dentro do ambiente do eixo PGFplots. Então, a resposta de Jake produz a linha pontilhada marrom (o eixo x) com

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

Achei que um simples uso da tikzbiblioteca calcme permitiria ajustar a posição vertical da linha horizontal. Se eu quiser uma linha horizontal em y=12, por exemplo, simplesmente uso

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

onde apliquei um + (axis cs: 0,12)e o mesmo para a outra coordenada.

Bem, isso é ótimo em teoria, mas não funciona. Em vez disso, produz a linha tracejada em vermelho (que é apenas metade da linha desejada):

insira a descrição da imagem aqui

Notas:

  • Em vez de fazer cálculos de coordenadas, também tentei aplicar shift={(axis cs: 0,12)}a opção, mas isso não teve efeito na saída.

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}

Responder1

Eu realmente não sei por que, mas isso funciona para mim

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

insira a descrição da imagem aqui

informação relacionada