線性梳狀圖,選擇不為零的原點

線性梳狀圖,選擇不為零的原點

我正在繪製頻譜數據,有時使用對數軸,有時使用線性,但值以 dB 為單位。繪製此類圖表(至少在我的領域)的常用方法是讓所有線條從圖表的下部開始,無論它們的值(負、正)。對於對數梳狀圖,可以使用 輕鬆實現log origin = infty。但是,如何將這樣的東西用於具有負值(線性比例)的圖形?目前,我將所有點向上移動最小值,然後移動所有 yticklabel。然而,這很麻煩,而且並不是真正的自動解決方案。我必須手動找到最小值才能找到最佳移位。這樣可以改進嗎?我發現了這個答案,但這是關於對數圖。我不太明白程式碼,所以我不知道這是否可以輕鬆修改。

這是我想要實現的 MWE:

\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 = 0 開始): 輸出錯誤

答案1

我認為你可以用一個「非常大的數字」來代替無限大。這裡我使用1000的值\verybignumber。然後我應用您的程式碼來\verybignumber代替130pgfplots設定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}

在此輸入影像描述

相關內容