我正在尝试创建一个包含上围栏和下围栏以及异常值的箱线图。我当前的图如下所示(减去所有标签):
\documentclass [12pt, letterpaper] {article}
\usepackage {pgfplots}
\pgfplotsset {compat=1.18}
\usepgfplotslibrary {statistics}
\begin {document}
\begin {center}
\begin {tikzpicture}
\begin {axis} [
xmin = 15,
xmax = 35,
xtick = {15, 20, 25, 30, 35},
ytick = \empty,
width = 10cm,
height = 5cm,
]
\addplot + [
boxplot prepared = {
median = 25.5,
upper quartile = 27,
lower quartile = 23,
upper whisker = 31,
lower whisker = 17,
},
] coordinates {};
\end {axis}
\end {tikzpicture}
\end {center}
\end {document}
问题是我不知道如何添加上围栏、下围栏和异常值;我需要我的图表看起来更像这样:
答案1
- 我提供一个非常手动的解决方案因为我的技能还不足以实现更自动化的解决方案。
- 我手动计算栅栏的位置根据维基百科(截至 2022-01-30),请参阅下面的引用块。
- 然后我手动画一条虚线。
- 注意,代码必须在 之前
\end{axis}
! \draw[dashed, blue] (17, 0.6) -- (17, 1.4);
如果您想改变颜色,可以使用。- 我将其注释掉
%ytick = \empty
,以便查看 y 位置需要哪些值(0.6 和 1.4)。
也可以通过不同的方法将同一数据集制作成箱线图,如图 3 所示。这一次,须的边界位于1.5 IQR 值.从上面上 四分位数(Q3),距离IQR 的 1.5 倍测量出来,并画出一条线到数据集中处于这个距离内的最大观测数据点。同样,距离1.5 乘以 IQR测量结果低于下四分位数(Q1)并绘制一条晶须,指向数据集中位于此距离内的最低观测数据点。晶须边界之外的所有其他观测数据点均被绘制为异常值。
(来源:https://towardsdatascience.com/understanding-boxplots-5e2df7bcbd51)
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{statistics}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis} [
xmin = 15,
xmax = 35,
xtick = {15, 20, 25, 30, 35},
%ytick = \empty,
width = 10cm,
height = 5cm,
]
\addplot+[
boxplot prepared = {
median = 25.5,
upper quartile = 27, % Q3
lower quartile = 23, % Q1
upper whisker = 31,
lower whisker = 17,
},
] coordinates {};
% https://en.wikipedia.org/wiki/Box_plot
% IQR = 27 - 23 = 4
% 1.5 * IQR = 6
% Lower Fence = Q1 - 1.5 * IQR = 17
% Upper Fence = Q3 + 1.5 * IQR = 33
\draw[dashed] (17, 0.6) -- (17, 1.4);
\draw[dashed] (33, 0.6) -- (33, 1.4);
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}