【发布时间】:2018-02-10 14:01:24
【问题描述】:
给定一个数据框df,如下所示。
df <- data.frame(x=c("A","B"), min=c(1,2), low=c(2,3), mid=c(3,4), top=c(4,5), max=c(5,6))
使用 ggplot,可以创建如下所示的箱线图
library(ggplot2)
ggplot(df, aes(x=x, ymin = min, lower = low, middle = mid, upper = top, ymax = max)) +
geom_boxplot(stat = "identity")
我需要为箱线图中的五个点添加标签(就在每个框右侧的框外) - 我该怎么做?
注意 - 这是关于从与问题 here 不同的预先计算的箱线图点数据中获取标签
更新:
www 提供的答案适用于原始数据集。但是,当我尝试使用不同但相似的数据集时,它会出错。
text <- "
test,group,varType,X25th,X50th,X5th,X75th,X95th
Test1,A,varC,20,25,2.0,35,65
Test1,A,varD,2,3,0.2,5,9
Test1,B,varC,30,35,3.0,45,75
Test1,B,varD,8,9,0.8,11,15
"
plotDat <- read.table(textConnection(text), sep=",", header = T, stringsAsFactors = F)
# for labels
plotLabels <- plotDat %>% gather(Col, Val, -c(test, group, varType))
ggplot(plotDat,
aes(x = group, ymin = X5th, lower = X25th,
middle = X50th, upper = X75th, ymax = X95th,
fill=group)) +
geom_boxplot(stat = "identity") +
geom_errorbar() +
facet_wrap( ~ varType, scale = "free_y") +
geom_text(data = plotLabels, aes(x = group, y = Val, label = Val),
nudge_x = 0.1, nudge_y = 0.3)
我得到的错误是Error in eval(expr, envir, enclos) : object 'X5th' not found
【问题讨论】:
-
你指的是哪 5 点?
-
@erocoar,我认为它是
df中的“min”、“low”、“mid”、“top”和“max” -
@EricFail - 该问题使用基础数据中的
stat_summary- 这里的值是预先计算的。 -
链接问题的second answer 应该可以解决您的问题。在那里明确计算汇总统计数据,然后将其添加到图中。所以你简单地省略了第一步。