Desenhar linhas em um gráfico e dar-lhes um rótulo?

Desenhar linhas em um gráfico e dar-lhes um rótulo?

Estou em minha primeira aventura plotando com LaTeX. Consegui traçar meu gráfico de barras. Tenho dois grupos de valores para os quais quero mostrar a média. Pretendo colocar uma barra horizontal sobre o gráfico de barras e deixar indicar os valores médios. Infelizmente, o desenho não está acoplado ao dimensionamento ou similar. No momento em que tiver que mudar alguma coisa na escala/rotulagem tudo ficará fora do lugar. Existe uma maneira prática de desenhar linhas (ou setas) que correspondam aos valores dos dados do gráfico subjacente?

Responder1

Presumo que você esteja tendo problemas para usar um ambiente tikz \drawdentro de \pgfplota axis. Neste caso você precisa usar o axis cssistema de coordenadas como ilustra a linha pontilhada em vermelho:

insira a descrição da imagem aqui

Notas:

Código: Especifique os valores x mínimo e máximo

\documentclass{article}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};
    \draw [ultra thick, dotted, draw=red] 
        (axis cs: -6,12) -- (axis cs: 6,12)
        node[pos=0.5, above] {$y=12$};
\end{axis}
\end{tikzpicture}
\end{document}

Código: Determine automaticamente os valores mínimo e máximo de x

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

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};
    
    \newcommand*{\VerticalPos}{12}% Desired vertical postion
    \coordinate (Left)  at ($(current axis.left of origin) +(axis direction cs: 0,\VerticalPos)$);
    \coordinate (Right) at ($(current axis.right of origin)+(axis direction cs: 0,\VerticalPos)$);
    
    \draw [ultra thick, dotted, draw=red] 
        (Left) -- (Right)
        node[pos=0.5, above] {$y=\VerticalPos$};
\end{axis}
\end{tikzpicture}
\end{document}

informação relacionada