Gráfico de peine lineal, eligiendo un origen diferente de cero

Gráfico de peine lineal, eligiendo un origen diferente de cero

Estoy trazando datos espectrales, a veces con ejes logarítmicos y otras veces lineales pero con valores en dB. La forma habitual de trazar este tipo de diagramas (al menos en mi campo) es que todas las líneas comiencen en la parte inferior del gráfico, a pesar de sus valores (negativos, positivos). Para gráficos de peine logarítmicos, esto se puede lograr fácilmente usando log origin = infty. Sin embargo, ¿cómo puedo usar algo como esto para gráficos con valores negativos (en escala lineal)? Actualmente, estoy cambiando todos los puntos hacia arriba por el valor más pequeño y luego cambiando todas las etiquetas ytick. Sin embargo, esto es engorroso y no es realmente una solución automática. Tengo que encontrar el valor más pequeño a mano para encontrar el cambio óptimo. ¿Se puede mejorar esto? He encontradoesta respuesta, pero se trata de gráficos logarítmicos. Realmente no entiendo el código, así que no sé si se puede modificar fácilmente.

Aquí hay un MWE con lo que estoy tratando de lograr:

\documentclass{article}

\usepackage{pgfplots} 

\begin{document}
    \begin{tikzpicture}
        \begin{axis}
            [
                % I'm using this:
                yticklabel = {\pgfmathparse{\tick-130}\pgfmathprintnumber{\pgfmathresult}},
                y filter/.expression = {y + 130},
                ymin = 0
                % I would like to have this:
                % comb origin = -infty % or something
            ]
            \addplot[ycomb] coordinates {
                (1, -6)
                (2, -80)
                (3, -85)
                (4, -120)
                (5, -120)
                (6, -120)
                (7, -120)
                (8, -120)
                (9, -120)
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

Y el resultado se ve así: Salida de muestra

Si no hago este cambio, el resultado se verá así (ya que todos los peines comienzan en y = 0): Salida incorrecta

Respuesta1

Creo que puedes usar un "número muy grande" como reemplazo del infinito. Aquí lo uso 1000para el valor de \verybignumber. Luego aplico su código \verybignumberen lugar de 130y lo dejo pgfplotsconfigurar ymin.

\documentclass[border=7pt]{standalone}
\usepackage{pgfplots}
\def\verybignumber{1000}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}
      [
        yticklabel = {\pgfmathparse{\tick-\verybignumber}\pgfmathprintnumber{\pgfmathresult}},
        y filter/.expression = {\verybignumber+y},
      ]
      \addplot[ycomb] coordinates {
        (1, -6)
        (2, -80)
        (3, -85)
        (4, -120)
        (5, -120)
        (6, -120)
        (7, -120)
        (8, -120)
        (9, -120)
      };
    \end{axis}
  \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada