将箱线图和直方图合并在一张图中(PGF / TikZ)

将箱线图和直方图合并在一张图中(PGF / TikZ)

我为我的本科毕业论文做了一个问卷调查,现在我想评估它并将其可视化为一个图表,结合多个值。本次调查的大多数答案都在 1-5 或 1-6 的范围内。我想将它们显示在直方图中以显示绝对值,并在箱线图中显示中位数、平均值、标准差……

为了高效利用空间,我想将它们显示在表格中,左边是问题,右边是图表。目前数据是在两个图表中处理的,而不是一个。 目前的工作状态

我希望将这两个图合并成一个图表,其中包含箱线图和直方图。以下是我想要实现的一个示例。

我想要的例子

经过几个小时的阅读和反复试验,我还是没有取得任何进展。我想知道是否有人可以帮助我正确设计。这是一张解释德语示例中的值的图片。

期望结果

使用 LaTex 可以做到这一点吗?

了解这种图表的术语已经很有帮助了

编辑:这是最小的代码示例,生成第一张图片中的情节。

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{pgf}
\usepackage{pgfplots}
\usepgfplotslibrary{statistics, external}
\usetikzlibrary{fit,calc}
\usepackage{mathtools}
\usepackage[ngerman]{babel}

\newcommand*{\boxplot}[6]{
% As seen in several examples
% #1: center, #2: median, #3: 1/4 quartile, #4: 3/4 quartile, #5: min, #6: max  
  \addplot+[
    line width=.2mm,
    black,
    boxplot prepared={
      lower whisker={#5},
      lower quartile={#3},
      median={#2},
      upper quartile={#4},
      upper whisker={#6},
      draw position = 10,
      box extend = 15,
      whisker extend = 17,
    }
  ]
  coordinates{};
}

\begin{document}

\begin{table}
  \centering
  \begin{tabular}{p{7.5cm}|p{7.5cm}}
    \hline
      Wie wichtig ist es dir, dass du mit deinen Kommilitonen gut auskommst? &
    \begin{tikzpicture}
      \begin{axis}[
          height=2cm, width=7cm,
          ybar, ymax=19, ymin=0, ytick={0,19}, yticklabels={0,19},
          xmin=0, xmax=6, xtick={1,...,5}, xticklabels={$\text{gar nicht}$,2,3,4,$\text{sehr}$}
          ] \addplot coordinates {(1,0) (2,0) (3,1) (4,8) (5,10)};
      \end{axis}
    \end{tikzpicture}
    \hspace*{0.3cm}
    \begin{tikzpicture}
      \begin{axis}[
          height=2cm, width=7cm,
          ymin=0, ymax=19, ytick={0,19}, yticklabels={,},
          xmin=0, xmax=6, xtick={1,...,5}, xticklabels={$\text{gar nicht}$,2,3,4,$\text{sehr}$},
          boxplot/every median/.style={draw=red},
          ] \boxplot{4.4736842105}{5}{3.91966759}{5.027700831}{3}{5}
      \end{axis}
    \end{tikzpicture}\\
    \hline
  \end{tabular}
\end{table}

\end{document}

答案1

仅使用一个tikzpicture环境并调整一些设置会产生以下图表(保持大部分代码不变)。

较小的评论:axis y line*=right设置将第二个轴的位置更改为图的右侧(在这种情况下不需要,因为我们没有任何可见的轴标签。但是,由于第二个图可能有一个轴,因此将其移动到右侧很有用。)

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{pgf}
\usepackage{pgfplots}
\usepgfplotslibrary{statistics, external}
\usetikzlibrary{fit,calc}
\usepackage{mathtools}
\usepackage[ngerman]{babel}

\newcommand*{\boxplot}[6]{
% As seen in several examples
% #1: center, #2: median, #3: 1/4 quartile, #4: 3/4 quartile, #5: min, #6: max  
  \addplot+[
    line width=.2mm,
    black,
    boxplot prepared={
      lower whisker={#5},
      lower quartile={#3},
      median={#2},
      upper quartile={#4},
      upper whisker={#6},
      draw position = 15,
      box extend = 3,
      whisker extend = 3,
    }
  ]
  coordinates{};
}



\begin{document}

\begin{table}
  \centering
  \begin{tabular}{p{7.5cm}|p{7.5cm}}
    \hline
      Wie wichtig ist es dir, dass du mit deinen Kommilitonen gut auskommst? &
    \begin{tikzpicture}
    \begin{axis}[
    height=4cm, width=7cm,
    ybar, ymax=19, ymin=0, ytick={0,19}, yticklabels={0,19},
    xmin=0, xmax=6, xtick={1,...,5}, xticklabels={$\text{gar nicht}$,2,3,4,$\text{sehr}$}
    ] \addplot coordinates { (3,1) (4,8) (5,10)};
    \end{axis}


    \begin{axis}[
    height=4cm, width=7cm,
    axis x line*=top,
    axis y line*=right,
    ymin=0, ymax=19, ytick={0,19}, yticklabels={},
    xmin=0, xmax=6, xtick={1,...,5}, xticklabels={0\%,0\%,10\%,40\%,50\%},
    boxplot/every median/.style={draw=red},
    ] \boxplot{4.4736842105}{5}{3.91966759}{5.027700831}{3}{5}
    \end{axis}
    \end{tikzpicture}\\
    \hline
  \end{tabular}
\end{table}

\end{document}

由此得出的图如下所示:

箱线图和条形图相结合

相关内容