Pgfplots:以固定间隔绘制指数减半的 x 值

Pgfplots:以固定间隔绘制指数减半的 x 值

我想用 pgfplots 绘制一个数据集。在我的数据集中,0 < x < 1,并且所有有趣的事情都发生在 x 的值接近 1 时。具体来说,有趣的点发生在 x 的减半间隔处:0.1、0.15、0.175 等等。

因此,我想做一些与对数刻度图相反的事情:使用自定义函数指定沿 x 轴的进展,以便我感兴趣的 x 坐标以规则的间隔表示。就像我在间隔加倍的情况下对对数刻度所做的那样。

我知道先前的答案,但我找不到适合我的情况的函数。我想我应该使用该x coord trafo/.code选项,但哪个参数适合我的情况?

有什么建议吗?提前谢谢您。

理想情况下,我希望 x 轴显示如下:

=== 0 === 0.5 === 0.75 === 0.875 === 等等。

对于像这样的简单数据集:

0.10  1
0.20  1
0.30  1
0.40  1
0.50  1
0.60  2
0.70  2
0.75  2
0.80  4
0.85  4
0.875 8
0.900 8

目前这是我的代码,没有获得预期的结果:

\documentclass{standalone}

\usepackage{standalone}
\usepackage{pgfplots}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{xfp}
\usepackage{ifthen}


\pgfplotstableread{
0.10  1
0.20  1
0.30  1
0.40  1
0.50  1
0.60  2
0.70  2
0.75  2
0.80  4
0.85  4
0.875 8
0.900 8
}\dataset

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xmin=0,
    xmax=1,
    scaled x ticks=false,
    x coord trafo/.code = {\pgfmathparse{\ifthenelse{#1==0}{1-(1/#1)}{0}}\pgfmathresult},
    x coord inv trafo/.code = {\pgfmathparse{\ifthenelse{#1==0}{1-(1/#1) }{0}}\pgfmathresult},
    scaled y ticks=false,
    ]

    \addplot table [x index = 0 , y index = 1 , col sep=comma]\dataset;

  \end{axis}
\end{tikzpicture}
\end{document}

相关内容