Gráfico de pente linear, escolhendo origem diferente de zero

Gráfico de pente linear, escolhendo origem diferente de zero

Estou plotando dados espectrais, às vezes com eixos logarítmicos e às vezes lineares, mas com valores em dB. A maneira usual de traçar esse tipo de diagrama (pelo menos na minha área) é fazer com que todas as linhas comecem na parte inferior do gráfico, independentemente de seus valores (negativo, positivo). Para gráficos de pente logarítmicos, isso pode ser facilmente alcançado usando log origin = infty. Porém, como posso usar algo assim para gráficos com valores negativos (em escala linear)? Atualmente, estou mudando todos os pontos pelo menor valor e depois mudando todos os yticklabels. No entanto, isto é complicado e não é realmente uma solução automática. Tenho que encontrar o menor valor manualmente para encontrar a mudança ideal. Isso pode ser melhorado? encontreiesta resposta, mas trata-se de gráficos logarítmicos. Eu realmente não entendo o código, então não sei se isso pode ser facilmente modificado.

Aqui está um MWE com o que estou tentando alcançar:

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

E o resultado fica assim: Saída de amostra

Se eu não fizer essa mudança, o resultado será assim (já que todos os pentes começam em y = 0): Saída errada

Responder1

Acho que você pode usar um "número muito grande" como substituto do infinito. Aqui eu uso 1000para o valor de \verybignumber. Então aplico seu código \verybignumberno lugar de 130e deixo pgfplotsset 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}

insira a descrição da imagem aqui

informação relacionada