
我正在繪製頻譜數據,有時使用對數軸,有時使用線性,但值以 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}
答案1
我認為你可以用一個「非常大的數字」來代替無限大。這裡我使用1000
的值\verybignumber
。然後我應用您的程式碼來\verybignumber
代替130
並pgfplots
設定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}