use*_*363 21 r ggplot2 boxplot
我正在做一个基本的箱子图,其中y=age
和x=Patient groups
age <- ggplot(data, aes(factor(group2), age)) + ylim(15, 80)
age + geom_boxplot(fill = "grey80", colour = "#3366FF")
Run Code Online (Sandbox Code Playgroud)
我希望你能用一些东西来帮助我:
1)是否可以在每个组框图上面包括每组的观察次数(但不是在我的组标签所在的X轴上),而不必在油漆中执行此操作:)?我尝试过使用:
age + annotate("text", x = "CON", y = 60, label = "25")
Run Code Online (Sandbox Code Playgroud)
CON
第一组在哪里,就在y = 60
这个组的箱线图上方.但是,该命令不起作用.我认为它有一些事情可以做,它x
是一个连续的而不是一个分类的变量.
2)尽管有很多关于使用平均值而不是中位数的问题,我仍然没有找到适合我的代码?
3)在同样的问题上你有没有办法在箱线图中包含平均组数据?也许用
age + stat_summary(fun.y=mean, colour="red", geom="point")
Run Code Online (Sandbox Code Playgroud)
然而,它只包括一个平均所在的点.或者再次使用
age + annotate("text", x = "CON", y = 30, label = "30")
Run Code Online (Sandbox Code Playgroud)
哪一个CON
是第一组,y = 30
是〜组年龄均值.知道如何灵活和丰富的ggplot2
语法,我希望有一种更优雅的方式来使用真实的统计输出而不是annotate
.
任何建议/链接将不胜感激!
谢谢!!
Ben*_*Ben 33
这就像你追求的那样吗?随着stat_summary
要求:
# function for number of observations
give.n <- function(x){
return(c(y = median(x)*1.05, label = length(x)))
# experiment with the multiplier to find the perfect position
}
# function for mean labels
mean.n <- function(x){
return(c(y = median(x)*0.97, label = round(mean(x),2)))
# experiment with the multiplier to find the perfect position
}
# plot
ggplot(mtcars, aes(factor(cyl), mpg, label=rownames(mtcars))) +
geom_boxplot(fill = "grey80", colour = "#3366FF") +
stat_summary(fun.data = give.n, geom = "text", fun.y = median) +
stat_summary(fun.data = mean.n, geom = "text", fun.y = mean, colour = "red")
Run Code Online (Sandbox Code Playgroud)
黑色数字是观察数量,红色数字是平均值.joran的答案向您展示了如何将数字放在方框的顶部
帽子:https://stackoverflow.com/a/3483657/1036500
jor*_*ran 18
我想这可能是你想要的?
myboxplot <- ddply(mtcars,
.(cyl),
summarise,
min = min(mpg),
q1 = quantile(mpg,0.25),
med = median(mpg),
q3 = quantile(mpg,0.75),
max= max(mpg),
lab = length(cyl))
ggplot(myboxplot, aes(x = factor(cyl))) +
geom_boxplot(aes(lower = q1, upper = q3, middle = med, ymin = min, ymax = max), stat = "identity") +
geom_text(aes(y = max,label = lab),vjust = 0)
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到当你询问平均值时我错误地使用了中位数,但你显然可以使用任何功能来满足middle
你的美学要求.
归档时间: |
|
查看次数: |
35995 次 |
最近记录: |