具有多个 x 轴和注释的钟形曲线

具有多个 x 轴和注释的钟形曲线

我刚刚开始使用pgfplots,并取得了不错的成果,但是在使用 LaTeX 完成这个时遇到了困难:

具有多个 x 轴和注释的钟形曲线

曲线本身没有问题,但多个 x 轴(我不需要顶部的,只需要中间和底部的)以及特别是图中间的“68.2%”不起作用。

以下是我目前得到的信息:

我的尝试

    \pgfmathdeclarefunction{gauss}{2}{%
    \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
        }

    \begin{tikzpicture}

    \begin{axis}[
      hide y axis, tick align=outside,
      domain=-3:3, samples=50,
      axis lines*=left, xlabel=$IQ-Werte$, ylabel=$~$,
      height=5cm, width=13cm,
      xtick={-2,-1,0,1,2}, ytick=\empty,
      xticklabels={%
        $70$,
        $85$,
        $100$,
        $115$,
        $130$}      
      ]

      \addplot [thick,black!50!black] {gauss(0,1)};
      \addplot [fill=black!10, domain=-1:1] {gauss(0,1)} \closedcycle;

    \end{axis}
    \end{tikzpicture}

答案1

简短回答:看看Christian 对这个问题的回答:关于同一图表上有多个 y 轴并适应。

较长的答案:请记住,pgfplotsaxis环境只是一种特殊类型的tikz节点。它具有特殊的坐标系,其中一种用于在绘图上绘图的坐标系称为axis cs。使用此坐标系,您可以将 TikZ 绘图命令放置在绘图窗口的任何部分。

您可以通过创建第二个轴环境来实现第二个 x 轴,其规格相同,但没有绘制实际函数,并进行适当偏移。如果绘制了函数,它将与第一个轴重叠,但如果没有函数,您看到的只是轴。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{icomma}
\begin{document}
   \pgfmathdeclarefunction{gauss}{2}{%
      \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
   }
   \begin{tikzpicture}
      % options common to all axes here
      \pgfplotsset{
         axis x line*=middle, 
         hide y axis, 
         tick align=outside,
         ytick=\empty,
         xmin=-3,xmax=3,
         width=13cm,height=7cm,
         xtick={-2,-1,0,1,2},      
      }

   % main plot
   \begin{axis}[
      samples=50,
      xlabel={IQ-Werte},
      domain=-3:3, 
      xticklabels={%
         $70$,
         $85$,
         $100$,
         $115$,
         $130$}      
      ]
      \addplot [thick,fill=blue!10,domain=-3.1:3.1] {gauss(0,1)} \closedcycle;
      \addplot [fill=blue!20, domain=-1:1] {gauss(0,1)} \closedcycle;
      \draw[thick,arrows={<->}] (axis cs:-1,0.125) -- (axis cs:1,0.125)
         node[pos=0.5,above] {$68,2\%$};
    \end{axis}

    % extra x axis
    \begin{axis}[yshift=-1.5cm,
      xlabel={Prozentr\"ange},
      xticklabels={{$2,3$}, {$15,9$}, {$50$}, {$84,1$}, {$97,7$}}
    ]
    \addplot[draw=none]{1};
    \end{axis}
    \end{tikzpicture}
\end{document}

示例代码输出

笔记:

  • icomma包允许使用逗号分隔符,就像您以前使用的那样。您可能使用其他包来实现这一点。
  • 您使用了$IQ-Werte$x 轴标签,但这会在数学模式下设置文本。这意味着字体形状会变成数学斜体,没有连字符,连字符会变成减号。您可能只想要纯文本。\textit{IQ-Werte}如果您想要斜体,请使用。
  • 我需要进行一次破解,以确保第二个绘制的刻度axis被注意到:我绘制了一个常数函数,并用键使其不可见draw=none
  • @maetra 注意到,早期版本在轴和第一个图之间有一些空白。我通过将其设为 来解决这个问题\closedcycle,然后稍微扩展域,这样产生的垂直边缘就会被窗口剪掉xmin:xmax

相关内容