我之前计算过以下数据:
plotData <- structure(list(Min = c(250.866197946263, 270.805621355386), `2.5%` = c(1806.60435406315,
1807.31835620068), `50%` = c(7660.214866495, 7667.78371852935
), mean = c(8598.13903058242, 8600.3276561399), `97.5%` = c(20678.7670144642,
20675.0354903488), Max = c(35526.3400756986, 36782.0082581976
)), .Names = c("Min", "2.5%", "50%", "mean", "97.5%", "Max"), row.names = c("median",
"mean"), class = "data.frame")
> plotData
Min 2.5% 50% mean 97.5% Max Type
median 250.8662 1806.604 7660.215 8598.139 20678.77 35526.34 Median
mean 270.8056 1807.318 7667.784 8600.328 20675.04 36782.01 Mean
我想要做的是使用ggplot将每一行绘制成一个箱形图,在平均值处加一行,然后在类型上做一个因子。因此,如果我在第一行有一个情节p
,我可以使用:
p + geom_boxplot(aes(fill = factor(Type)))
然而,如果您提供我不具备的原始数据,ggplot似乎只会绘制它。有没有办法直接从ggplot2的摘要统计中获取箱图?
我也试过用geom_errorbar做这件事,但没有太大的成功......
谢谢!
答案 0 :(得分:1)
ggplot2 docs之后有一个例子。基本上您应该将stat
设置为"identity"
。
使用您的数据,您可以得到以下内容:
row.names(plotData) -> plotData$X1;
ggplot(plotData, aes(x = X1, ymin=Min, lower=`2.5%`, middle = `50%`, upper = `97.5%`, ymax = Max)) +
geom_boxplot(stat="identity")
要为平均线添加线条,我唯一能够意识到的方法是在一个相当&#34; hacky&#34;方式。
ggplot(plotData, aes(x = X1, ymin=Min, lower=`2.5%`, middle = `50%`, upper = `97.5%`, ymax = Max)) +
geom_boxplot(stat="identity") +
geom_text(aes(x=X1, y=mean), label="__________________________________", color="red")