pfgplots y 轴指数级数

pfgplots y 轴指数级数

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}

具有特殊比例 y 轴的图表

相关内容