Ich stelle Spektraldaten dar, manchmal mit logarithmischen Achsen und manchmal linear, aber mit Werten in dB. Die übliche Art, diese Art von Diagrammen darzustellen (zumindest in meinem Bereich), besteht darin, alle Linien unabhängig von ihren Werten (negativ, positiv) im unteren Teil des Diagramms beginnen zu lassen. Für logarithmische Kammdiagramme kann dies leicht mit erreicht werden log origin = infty. Wie kann ich jedoch so etwas für Diagramme mit negativen Werten (in linearer Skala) verwenden? Derzeit verschiebe ich alle Punkte um den kleinsten Wert nach oben und verschiebe dann alle yticklabels. Dies ist jedoch umständlich und keine wirklich automatische Lösung. Ich muss den kleinsten Wert manuell finden, um die optimale Verschiebung zu finden. Kann dies verbessert werden? Ich habe festgestelltdiese Antwort, aber hier geht es um logarithmische Diagramme. Ich verstehe den Code nicht wirklich und weiß daher nicht, ob dies einfach geändert werden kann.
Hier ist ein MWE mit dem, was ich erreichen möchte:
\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}
Und das Ergebnis sieht so aus:

Wenn ich diese Verschiebung nicht mache, dann sieht das Ergebnis so aus (da alle Kämme bei y = 0 beginnen):

Antwort1
Ich denke, dass Sie eine „sehr große Zahl“ als Ersatz für Unendlichkeit verwenden können. Hier verwende ich 1000für den Wert von \verybignumber. Dann wende ich Ihren Code mit \verybignumberanstelle von an 130und lasse pgfplotsauf setzen 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}



