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 tikz
biblioteca calc
me 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):
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}