TLDR:如何在 pgfplots 中创建一个网格,其中 Y 轴以 n^0.286 而不是 ymode=log 的形式进行。
我必须用这个网格构建一个图表:
X 轴是摄氏温度,Y 轴是百帕压力。但问题是 Y 轴不是对数模式,而是倒数:它实际上是以指数形式递增的,即 n^0.286。
例如,如果我尝试使用以下方法以对数模式创建带有 y 轴的网格:
\documentclass[titlepage]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymode=log,
log ticks with fixed point,
ymin=95,
ymax=1020,
ytick={100,200,...,1000},
y dir=reverse,
xmin=-95,
xmax=45,
ylabel=p (hPa),
xlabel=T,
grid=both,
width=15cm,
decoration={name=none},
]
\end{axis}
\end{tikzpicture}
\end{document}
我得到了一个与预期网格不叠加的网格:
预期网格的 y 轴不是对数模式;应以 n^0.286 的形式呈指数增长。这可以用 pgfplots 实现吗?
答案1
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-95, xmax=45,
ymin=95, ymax=1020, y dir=reverse,
ytick={100,200,...,1000},
yticklabel style={/pgf/number format/.cd, precision=0, relative*=2},
xlabel=T, ylabel=p (hPa),
grid=both,
width=15cm,
y coord trafo/.code={\pgfmathparse{#1^0.286}},
y coord inv trafo/.code={\pgfmathparse{#1^(1/0.286)}},
]
\end{axis}
\end{tikzpicture}
\end{document}\end{document}