如何根据pgfplots中的x-ticks实现X轴缩放(即指定的x-ticks之间的距离是恒定的)

如何根据pgfplots中的x-ticks实现X轴缩放(即指定的x-ticks之间的距离是恒定的)

我的 pgfplot 有以下代码,但我想实现自定义 x 轴缩放,就像下面附加的图像一样。任何帮助都将不胜感激。

准确度与稀疏度

\begin{filecontents*}{data.dat}
x y err
50  92.67   0.125957348
60  92.7    0.020626807
70  92.49   0.003094064
80  92.04   0.005627052
90  91.61   0.005936952
95  90.2    0.032337642
96  90.45   0.111504465
97  89.83   0.006648374
98  90.04   0.062403899
99  89  0.01228753
99.3    88.35   0.026578355
99.5    87.67   0.007559671
99.7    86.73   0.006666544
\end{filecontents*}

\begin{tikzpicture}

\begin{axis}[
        xlabel={Network sparsity},
        ylabel={Test accuracy},
        ymin=80, ymax=95,
        ymajorgrids=true,
        xmajorgrids=true,
        xtick={50,70,90,95,98,99.7},
]
\addplot [color=blue,mark=x] table[x=x,y=y] {data.dat};
\end{axis}
\end{tikzpicture}

答案1

您可以使用x coord trafo和逆x coord inv trafo制作自定义 x 比例。您不必写什么你想要的自定义比例,所以这只是一个猜测

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
x coord trafo/.code={\pgfmathparse{100-ln(100-#1)}},
x coord inv trafo/.code={\pgfmathparse{100-exp(100-#1)}},
xlabel={Network sparsity},
ylabel={Test accuracy},
xmin=0, xmax=98.5,
ymin=90, ymax=94.5,
xmajorgrids=true, ymajorgrids=true,
xtick={20.0, 48.8, 67.2, 79.0, 86.6, 91.4, 94.5, 96.5, 97.7},
x tick label style={font=\small, rotate=45, /pgf/number format/.cd, fixed, fixed zerofill, precision=1},
]
\addplot[red, mark=x, domain=20:98] {94-6/(100-x)};
\end{axis}
\end{tikzpicture}
\end{document}

具有自定义 x 值间距的图表

相关内容