
Estou plotando dados espectrais, às vezes com eixos logarítmicos e às vezes lineares, mas com valores em dB. A maneira usual de traçar esse tipo de diagrama (pelo menos na minha área) é fazer com que todas as linhas comecem na parte inferior do gráfico, independentemente de seus valores (negativo, positivo). Para gráficos de pente logarítmicos, isso pode ser facilmente alcançado usando log origin = infty
. Porém, como posso usar algo assim para gráficos com valores negativos (em escala linear)? Atualmente, estou mudando todos os pontos pelo menor valor e depois mudando todos os yticklabels. No entanto, isto é complicado e não é realmente uma solução automática. Tenho que encontrar o menor valor manualmente para encontrar a mudança ideal. Isso pode ser melhorado? encontreiesta resposta, mas trata-se de gráficos logarítmicos. Eu realmente não entendo o código, então não sei se isso pode ser facilmente modificado.
Aqui está um MWE com o que estou tentando alcançar:
\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}
Se eu não fizer essa mudança, o resultado será assim (já que todos os pentes começam em y = 0):
Responder1
Acho que você pode usar um "número muito grande" como substituto do infinito. Aqui eu uso 1000
para o valor de \verybignumber
. Então aplico seu código \verybignumber
no lugar de 130
e deixo pgfplots
set 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}