我是 LaTeX 新手。如何在 LaTeX 中绘制箱线图。我的数据集如下
index median box_top box_bottom whisker_top whisker_bottom
0 1 1.2 0.4 1.5 0.2
1 2 2.3 1.5 2.7 1
2 0.7 1.4 0.5 1.9 0.1
我在 Ubuntu 12.04 LTS 上使用 Kile。
编辑:代码已添加输出。
\documentclass{minimal}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
0 1 1.2 0.4 1.5 0.2
1 2 2.3 1.5 2.7 1
2 0.7 1.4 0.5 1.9 0.1
3 1 1.2 0.4 1.5 0.2
4 2 2.3 1.5 2.7 1
5 0.7 1.4 0.5 1.9 0.1
\end{filecontents}
\pgfplotsset{
box plot width/.initial=1em,
box plot/.style={
/pgfplots/.cd,
black,
only marks,
mark=-,
mark size=\pgfkeysvalueof{/pgfplots/box plot width},
/pgfplots/error bars/.cd,
y dir=plus,
y explicit,
},
box plot box/.style={
/pgfplots/error bars/draw error bar/.code 2 args={%
\draw ##1 -- ++(\pgfkeysvalueof{/pgfplots/box plot width},0pt) |- ##2 -- ++(-\pgfkeysvalueof{/pgfplots/box plot width},0pt) |- ##1 -- cycle;
},
/pgfplots/table/.cd,
y index=2,
y error expr={\thisrowno{3}-\thisrowno{2}},
/pgfplots/box plot
},
box plot top whisker/.style={
/pgfplots/error bars/draw error bar/.code 2 args={%
\pgfkeysgetvalue{/pgfplots/error bars/error mark}%
{\pgfplotserrorbarsmark}%
\pgfkeysgetvalue{/pgfplots/error bars/error mark options}%
{\pgfplotserrorbarsmarkopts}%
\path ##1 -- ##2;
},
/pgfplots/table/.cd,
y index=4,
y error expr={\thisrowno{2}-\thisrowno{4}},
/pgfplots/box plot
},
box plot bottom whisker/.style={
/pgfplots/error bars/draw error bar/.code 2 args={%
\pgfkeysgetvalue{/pgfplots/error bars/error mark}%
{\pgfplotserrorbarsmark}%
\pgfkeysgetvalue{/pgfplots/error bars/error mark options}%
{\pgfplotserrorbarsmarkopts}%
\path ##1 -- ##2;
},
/pgfplots/table/.cd,
y index=5,
y error expr={\thisrowno{3}-\thisrowno{5}},
/pgfplots/box plot
},
box plot median/.style={
/pgfplots/box plot
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis} [enlarge x limits=0.5,xtick=data, box plot width=0.5em]
\addplot [box plot median] table {testdata.dat};
\addplot [box plot box] table {testdata.dat};
\addplot [box plot top whisker] table {testdata.dat};
\addplot [box plot bottom whisker] table {testdata.dat};
\end{axis}
\end{tikzpicture}
\end{document}
编辑 2:这是我试图绘制的实际数据
%index median box_top box_bottom whisker_top whisker_bottom
0.52 21.5 191.5 4 150842.5 3
0.53 17 71.5 3 30840.5 2
0.54 5 1 2 2799 1
0.55 9 54 3 2425 2
0.56 4 11.5 2 643.5 1
0.57 3 10 2 124 1
答案1
箱线图在PGFPLOTS 手册. [编辑 pgfplots v. 1.13 中的第 5.12.1 章]
将您的数据与手册中的示例结合使用,我得到:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{statistics}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ytick={1,2,3},
yticklabels={Index 0, Index 1, Index 2},
]
\addplot+[
boxplot prepared={
median=1,
upper quartile=1.2,
lower quartile=0.4,
upper whisker=1.5,
lower whisker=0.2
},
] coordinates {};
\addplot+[
boxplot prepared={
median=2,
upper quartile=2.3,
lower quartile=1.5,
upper whisker=2.7,
lower whisker=1
},
] coordinates {};
\addplot+[
boxplot prepared={
median=0.7,
upper quartile=1.4,
lower quartile=0.5,
upper whisker=1.9,
lower whisker=0.1
},
] coordinates {};
\end{axis}
\end{tikzpicture}
\end{document}