x 轴上的缩放间隔不同 pgfplots

x 轴上的缩放间隔不同 pgfplots

我正在尝试重新创建下图中的图。我最初的想法是将四个不同比例的间隔绘制为单独的图,并将它们无缝对齐。

是否有更优雅的解决方案,允许单独缩放 x 轴上的间隔?

在此处输入图片描述

编辑:根据@Rmano 提供的见解,我能够(经过大量调整)获得所需的结果。请参阅下面的代码和输出。

 \pgfplotsset{
    x coord trafo/.code={
        \pgfmathparse{
            #1<=4?
            #1*50
            :%trekke fra 16
            (#1<30?
                #1*10+160
                :
                (#1<150?
                    #1*2+400
                    :
                    #1*0.5+625
                )
            )
        }
    },
    x coord inv trafo/.code={
        \pgfmathparse{
            #1<200?
                #1/50
                :
                (#1<460?
                    (#1-160)/10
                    :
                    (#1<640?
                        (#1-400)/2
                        :
                        (#1-625)/0.5
                    )
                )
        }
    }
 }

在此处输入图片描述

答案1

找到了!这是手册的相关部分;我的磁盘中有一个例子,源自是否可以只改变部分图的 y 缩放比例?

%%% https://tex.stackexchange.com/questions/359878/is-it-possible-to-alter-the-y-scaling-for-only-part-of-a-plot
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\usetikzlibrary{arrows.meta,positioning,calc}
\begin{document}
\begin{tikzpicture}[fill=gray]

\pgfplotsset{
    y coord trafo/.code={
        \pgfmathparse{
            #1>10?
                #1+20
            :
                #1*3
        }
    },
    y coord inv trafo/.code={
        \pgfmathparse{
            #1>30?
                #1-20
            :
                #1/3
        }
    }
}
% thanks to Paul Gessler https://tex.stackexchange.com/a/235629/38080
%Prevent double labelling at origin
\pgfplotsset{ignore zero/.style={%
  #1ticklabel={\ifdim\tick pt=0pt \else\pgfmathprintnumber{\tick}\fi}
}}

\begin{axis}[
  axis y line*=left,
  ymin=0,
  ymax=104,
  xmin=0,
  xmax=9.9,
  xlabel=units of time,
  ylabel=percentage,
  y=1.5cm/15,
  x=1.5cm,
  ignore zero=y,
  ]

\fill[gray!20] (0,0) rectangle (10,10);

\addplot[smooth,mark=*,blue]
  coordinates{
    (0 , 100.000000000000)
    (1 , 21)
    (2 , 1.28)
    (3 , 0.21)
    (4 , 0.03)
    (5 , 0.004)
    (6 , 0.0005)
    (7 , 0.00005)
    (8 , 0.000007)
    (9 , 0.0000008)
  };
\addlegendentry{blue} 

\addplot[smooth,mark=o,green]
  coordinates{
    (0 , 100.000000000000)
    (1 , 2.004965950432)
    (2 , 0.050130282209)
    (3 , 0.001303231721)
    (4 , 0.000034413136)
    (5 , 0.000000916142)
    (6 , 0.000000024509)
    (7 , 0.000000000658)
    (8 , 0.000000000018)
    (9 , 0.000000000000)  
  };
\addlegendentry{green} 

\addplot[smooth,mark=*,red]
  coordinates{
    (0 , 100.000000000000)
    (1 , 30.969834976929)
    (2 , 11.504103027913)
    (3 , 4.422780528370)
    (4 , 1.725299638737)
    (5 , 0.678378118320)
    (6 , 0.268047163678)
    (7 , 0.106264332554)
    (8 , 0.042226956059)
    (9 , 0.016809562633)  
  };
\addlegendentry{red} 

\addplot [purple, domain=0:8] {10*x};
\addlegendentry{straight}

\draw[ultra thick, white] (0,10) -- (10, 10);

\end{axis}

\end{tikzpicture}
\end{document}

在此处输入图片描述

我认为它可以应用于您的情况(使用相应的x trafo...样式。

相关内容