
때로는 로그 축을 사용하고 때로는 선형이지만 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}