
私はスペクトルデータをプロットしています。対数軸の場合もあれば、dB単位の線形の場合もあります。この種の図をプロットする通常の方法は(少なくとも私の分野では)、値(負、正)にかかわらず、すべての線をグラフの下部から開始することです。対数コームプロットの場合、これは次のように簡単に実現できます。log origin = infty
。しかし、負の値 (線形スケール) のプロットにこのようなものを使用するにはどうすればよいでしょうか。現在、すべてのポイントを最小値だけ上にシフトしてから、すべての yticklabels をシフトしています。ただし、これは面倒で、実際には自動的なソリューションではありません。最適なシフトを見つけるには、最小値を手動で見つける必要があります。これを改善することはできますか。私は次の方法を見つけました。この答えただし、これは対数プロットに関するものです。コードをよく理解していないので、簡単に変更できるかどうかはわかりません。
私が達成しようとしていることを示した 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
無限大の代わりに「非常に大きな数」を 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}