pgfplots: Cómo dibujar una línea hasta el final del sistema de coordenadas

pgfplots: Cómo dibujar una línea hasta el final del sistema de coordenadas

ingrese la descripción de la imagen aquí

¿Cómo puedo dibujar una línea vertical exactamente hasta el final del sistema de coordenadas en la dirección y?

·Tenga en cuenta que 'ymax=10' (configurado automáticamente) puede cambiar (y no lo sé ymax=<value>, porque las tablas contienen números aleatorios).

·Tenga en cuenta que se proporciona el valor de x '6' (normalmente leído en la tabla como un 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}

Respuesta1

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

ingrese la descripción de la imagen aquí

Respuesta2

Dos ideas (debe configurar la compatopción en una eversión reciente en cualquier caso):

  1. Utilice update limits=falsepara evitar que las coordenadas de la línea extiendan los límites del eje 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. Dibuja la línea usando un \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 ejemplos de código producen el mismo resultado:

ingrese la descripción de la imagen aquí

información relacionada