pgfplots: Como desenhar uma linha até o final do sistema de coordenadas

pgfplots: Como desenhar uma linha até o final do sistema de coordenadas

insira a descrição da imagem aqui

Como posso desenhar uma linha vertical exatamente até o final do sistema de coordenadas na direção y?

·Observe que o 'ymax = 10' (definido automaticamente) pode mudar (e eu não sei ymax=<value>, porque as tabelas contêm números aleatórios).

·Observe que o valor x '6' é fornecido (normalmente lido na tabela como um valor especial).

\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\begin{document}

\pgfplotstableread[col sep=comma]{
0, 0
1, 0
2, 0
3, 1
4, 3
5, 2
6, 5
7, 0
8, 1
12,10
13,5
}\mytable


\begin{tikzpicture}[]
\begin{axis}[
xmin=0, ymin=0, 
]
\addplot[mark=*] table[]{\mytable};

\addplot[densely dashed, red] coordinates{(6,0) (6,10)};
\end{axis}
\end{tikzpicture}
\end{document}

Responder1

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\pgfplotstableread[col sep=comma]{
0, 0
1, 0
2, 0
3, 1
4, 3
5, 2
6, 5
7, 0
8, 1
12,10
13,5
}\mytable
\begin{tikzpicture}
\begin{axis}[
xmin=0, ymin=0, 
]
\addplot[mark=*] table[]{\mytable};
\draw[red, ultra thick, densely dashed] (6,0) -- (6,0|-current axis.north);
\draw[green, densely dashed] (6,0) -- (6,\pgfkeysvalueof{/pgfplots/ymax});
\end{axis}
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Responder2

Duas ideias (você deve definir a compatopção para uma eversão recente em qualquer caso):

  1. Utilize update limits=falsepara evitar que as coordenadas da linha estendam os limites do eixo y:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\pgfplotstableread[col sep=comma]{
0, 0
1, 0
2, 0
3, 1
4, 3
5, 2
6, 5
7, 0
8, 1
12,10
13,5
}\mytable

\begin{tikzpicture}[]
\begin{axis}[
    xmin=0, ymin=0, 
]
\addplot[mark=*] table[]{\mytable};

\addplot[densely dashed, red, update limits=false] coordinates{(6,0) (6,11)};

\end{axis}
\end{tikzpicture}
\end{document}
  1. Desenhe a linha usando um \drawcomando:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\pgfplotstableread[col sep=comma]{
0, 0
1, 0
2, 0
3, 1
4, 3
5, 2
6, 5
7, 0
8, 1
12,10
13,5
}\mytable

\begin{tikzpicture}[]
\begin{axis}[
    xmin=0, ymin=0
]
\addplot[mark=*] table[]{\mytable};

\draw[densely dashed, red] 
    (6,0 |- {yticklabel cs:0}) -- (6,0 |- {yticklabel cs:1});

% alternatively:
% \draw[densely dashed, red] 
%    (6,\pgfkeysvalueof{/pgfplots/ymin}) -- (6,\pgfkeysvalueof{/pgfplots/ymax});

\end{axis}
\end{tikzpicture}
\end{document}

Ambos os exemplos de código produzem a mesma saída:

insira a descrição da imagem aqui

informação relacionada