如何在 LaTex 环境中绘制离散数的累积分布函数 (CDF)?

如何在 LaTex 环境中绘制离散数的累积分布函数 (CDF)?

个人/家庭的总体成就向量表示为x=(x_1 \cdots x_n)。为了说明这一点,假设社会中有五个人,总收入为$25$18$15$33$31在这种情况下,x=(25, 18, 15, 33, 31)是一个表示社会收入的向量。可以看出,对总体成就向量进行排序/排名;换句话说,根据个人或家庭的成就对其进行排名/排序,结果为(15, 18, 25, 31, 33)。这里的目的是绘制 的累积分布函数X?这是我的研究论文的摘录——多维贫困分析领域的福利分析方法!

\begin{axis}[
    clip=false,
    jump mark left,
    ymin=0,ymax=1,
    xmin=0, xmax=6,
    every axis plot/.style={very thick},
    discontinuous,
    table/create on use/cumulative distribution/.style={
        create col/expr={\pgfmathaccuma + \thisrow{f(x)}}   
    }
]
\addplot [red] table [y=cumulative distribution]{
P(x) f(x)
<15  0
15  1/5
18  2/5
25 3/5
31 4/5
33 1
};
\end{axis}

答案1

我调整了以下内容以获得以下结果:

  • 密钥代码discontinuous复制自这里

  • x 和 y 范围不合适;我调整它们以

    ymin=0,ymax=3.5, xmin=14,xmax=35,
    
  • 目前,第一列被视为 x 值,因此“<15”不起作用。我将其替换为范围的最小值 14。

  • 我将 x 范围的上限 (35) 添加到表中,以便也绘制最后的累积值。

enter image description here

\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\makeatletter
\long\def\ifnodedefined#1#2#3{%
    \@ifundefined{pgf@sh@ns@#1}{#3}{#2}%
}

\pgfplotsset{
    discontinuous/.style={
    scatter,
    scatter/@pre marker code/.code={
        \ifnodedefined{marker}{
            \pgfpointdiff{\pgfpointanchor{marker}{center}}%
             {\pgfpoint{0}{0}}%
             \ifdim\pgf@y>0pt
                \tikzset{options/.style={mark=*, fill=white}}
                \draw [densely dashed,blue] (marker-|0,0) -- (0,0);
                \draw plot [mark=*] coordinates {(marker-|0,0)};
             \else
                \tikzset{options/.style={mark=none}}
             \fi
        }{
            \tikzset{options/.style={mark=none}}        
        }
        \coordinate (marker) at (0,0);
        \begin{scope}[options]
    },
    scatter/@post marker code/.code={\end{scope}}
    }
}

\makeatother

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    clip=false,
    jump mark left,
    ymin=0,ymax=3.5,
    xmin=14,xmax=35,
    xlabel={income},
    ylabel={cumulative distribution},
    every axis plot/.style={very thick},
    discontinuous,
    table/create on use/cumulative distribution/.style={
        create col/expr={\pgfmathaccuma + \thisrow{f(x)}}   
    }
]
\addplot [red] table [y=cumulative distribution]{
P(x) f(x)
14   0
15  1/5
18  2/5
25 3/5
31 4/5
33 1
35 0
};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容