如果我有一组数据集,其中大多数有趣的东西都发生在较小的值上,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 轴进行了变换,最终结果又是一条直线: