pgfplots 自定义轴缩放函数

pgfplots 自定义轴缩放函数

如果我有一组数据集,其中大多数有趣的东西都发生在较小的值上,x那么我可以使用\begin{semilogxaxis} ... \end{semilogxaxis}它来创建一个带有对数轴的图x,这可以压缩较大x值的图,并使用较小值的更多绘图区域x

我有一组数据集,0 < x < 1其中所有有趣的事情都发生在x接近 1 的值时。因此,我想做与对数图相反的操作:使用自定义函数指定沿轴的进程,x以便大值x占据不成比例的很大一部分绘图区域。

我知道我可以通过转换x数据中的值然后伪造自定义刻度标签来解决这个问题,但是有没有一种简单的方法可以让 pgfplots 自动执行此操作?

答案1

原则上,pgfplots 提供了您所需的内容。 特别是x coord trafo手册帮助部分,正如 Qrrbrbirlbel 所提到的。

这是一个非常简单的例子:

\documentclass[tikz,12pt,preview]{standalone}

\usepackage{filecontents}

\begin{filecontents*}{transform.dat}
1   1
2   4
3   9
4   16
\end{filecontents*}

\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8} 
\usetikzlibrary{plotmarks,calc} 

\begin{document}

\begin{tikzpicture}

\pgfplotsset{
x coord trafo/.code={\pgfmathparse{#1^2}\pgfmathresult},
x coord inv trafo/.code={\pgfmathparse{#1}\pgfmathresult},
}

\begin{axis}[ylabel={$f(x)=x^2$},xlabel=$x^2$]
    \addplot table {transform.dat};
\end{axis}
\end{tikzpicture} 

\end{document}

这里对 x 轴进行了变换,最终结果又是一条直线:

在此处输入图片描述

相关内容