我有这个代码
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{pgfplots}
\usepgfplotslibrary{statistics}
\pgfplotsset{compat=1.10}
\usepackage{caption}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=0.75]
\begin{axis}[samples=101,smooth,height=9cm,ymin =0,
boxplot/draw direction=y,
xtick=\empty,
ytick={200,400,600,1200,1400,2675,4000},ytick pos=left,boxplot/variable width,
]
\addplot+ [boxplot ={lower whisker=400, lower quartile=600, median=1200, upper quartile=1400, upper whisker=2675}, ] coordinates {(0,200)(0,4000)};
\addplot[mark=none] coordinates {(1,4000)} node[pin=0:{Valor atípico}]{} ;
\addplot[mark=none] coordinates {(1,2675)} node[pin=15:{ $P_{75}+1.5\cdot RIC(X)$}]{} ;
\addplot[mark=none] coordinates {(1,400)} node[pin=-15:{ $P_{25}-1.5\cdot RIC(X)$}]{} ;
\addplot[mark=none] coordinates {(1.075,1200)} node[pin=0:{$Q_{2}=Me$}]{} ;
\addplot[mark=none] coordinates {(1.075,600)} node[pin=0:{$Q_{1}$}]{} ;
\addplot[mark=none] coordinates {(1.075,1400)} node[pin=15:{$Q_{3}$}]{} ;
\addplot[mark=none] coordinates {(1,200)} node[pin=180:{Valor atípico}]{} ;
\end{axis}
\end{tikzpicture}\captionof*{figure}{Without prepared: No lower outlier}
\begin{tikzpicture}[scale=0.75]
\begin{axis}[samples=101,smooth,height=9cm,ymin =0,
boxplot/draw direction=y,
xtick=\empty,
ytick={200,400,600,1200,1400,2675,4000},ytick pos=left,boxplot/variable width,
]
\addplot+ [boxplot prepared ={lower whisker=400, lower quartile=600, median=1200, upper quartile=1400, upper whisker=2675,box extend =0.5,}, ] coordinates {(0,200)(0,4000)};
\addplot[mark=none] coordinates {(1,4000)} node[pin=0:{Valor atípico}]{} ;
\addplot[mark=none] coordinates {(1,2675)} node[pin=15:{ $P_{75}+1.5\cdot RIC(X)$}]{} ;
\addplot[mark=none] coordinates {(1,400)} node[pin=-15:{ $P_{25}-1.5\cdot RIC(X)$}]{} ;
\addplot[mark=none] coordinates {(1.075,1200)} node[pin=0:{$Q_{2}=Me$}]{} ;
\addplot[mark=none] coordinates {(1.075,600)} node[pin=0:{$Q_{1}$}]{} ;
\addplot[mark=none] coordinates {(1.075,1400)} node[pin=15:{$Q_{3}$}]{} ;
\addplot[mark=none] coordinates {(1,200)} node[pin=180:{Valor atípico}]{} ;
\end{axis}
\end{tikzpicture}\captionof*{figure}{With prepared: outlier but messed width up}
\end{center}
\end{document}
如你所见,第一个点在 (0,200) 处没有异常值,但该点在范围内
在第二个中,我得到了两个异常值,但是盒子大小却很狂野。
我尝试按顺序修改第二个box extend =0.5,
,但没有成功。
我错过了什么?
提前致谢
答案1
我认为宽度差异是使用的结果boxplot/variable width
。请参阅手册中的描述:
将例如添加sample size=1
到第二个,看起来你得到了相同的宽度。
关于缺失的异常值,我不确定为什么会发生这种情况。但据我了解,boxplot
您应该提供数据,并pgfplots
计算晶须、四分位数和中位数。为什么不能只使用boxplot prepared
,当您有预先计算的值时,这是预期的方法?
一个更简洁的例子
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{statistics}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
boxplot/draw direction=y,
boxplot/variable width=true,
]
\addplot+ [
boxplot ={
lower whisker=400,
lower quartile=600,
median=1200,
upper quartile=1400,
upper whisker=2675}
] coordinates {(0,200)(0,4000)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
boxplot/draw direction=y,
boxplot/variable width=true,
]
\addplot+ [
boxplot prepared ={
sample size=1, % <-- added
lower whisker=400,
lower quartile=600,
median=1200,
upper quartile=1400,
upper whisker=2675}
] coordinates {(0,200)(0,4000)};
\end{axis}
\end{tikzpicture}
\end{document}