我的 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}