我正在尝试制作一个箱形图,其中框的宽度与其数字大小成比例。我已经为分类X变量计算了汇总统计量:(n,p5,p25,p50,p75,p95)。我做了一些研究并尝试使用" n"变量作为一组权重,以及使用" varwidth = TRUE" geom_boxplot中的参数。这些都不适合我。当您已经计算出数据的摘要统计数据时,有没有办法添加比例宽度?以下是我的代码的示例:
src <- c("a", "b", "c")
n <- c(10, 20, 30)
p5 <- c(-10, -20, -15)
p25 <- c(-5, -10, -10)
p50 <- c(5, 0, 5)
p75 <- c(10, 5, 15)
p95 <- c(15, 20, 30)
df <- data.frame(src, n, p5, p25, p50, p75, p95)
MonthsSrc <- ggplot(data=df, aes(x=factor(src), ymin=p5, lower=p25, middle=p50, upper=p75, ymax=p95)) +
geom_boxplot(stat="identity", fill="white", colour="black", varwidth=TRUE) +
scale_y_continuous(name="Value(%)", limits=c(-30,30), breaks=c(-30,-15,0,15,30), labels=c(-30,-15,0,15,30)) +
theme_classic() +
theme(axis.line.x=element_line(color="black",size=0.5),
axis.line.y=element_line(color="black",size=0.5))
感谢您的帮助!
答案 0 :(得分:0)
一种(hacky)这样做的方法是使用varwidth=T
,这意味着宽度与sqrt(n)
成比例。然后我们可以使用weight
美学将n
带到weight=sqrt(n)
,因为sqrt(n)* sqrt(n)= n。
来自mpg
的{{1}}数据集的示例:
ggplot2
可能有更好的解决方案。