반응형
상자 그림은 평균 값을 보여줍니다.
이 상자 그림에서 평균을 볼 수 있지만 모든 상자 그림의 모든 평균에 대해 그림에서 숫자 값을 어떻게 가질 수 있습니까?
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() +
stat_summary(fun.y=mean, colour="darkred", geom="point",
shape=18, size=3,show_guide = FALSE)
먼저 다음을 사용하여 그룹 평균을 계산할 수 있습니다 aggregate
.
means <- aggregate(weight ~ group, PlantGrowth, mean)
이 데이터 세트는 다음과 함께 사용할 수 있습니다 geom_text
.
library(ggplot2)
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() +
stat_summary(fun.y=mean, colour="darkred", geom="point",
shape=18, size=3,show_guide = FALSE) +
geom_text(data = means, aes(label = weight, y = weight + 0.08))
여기서는 + 0.08
평균을 나타내는 점 위에 레이블을 배치하는 데 사용됩니다.
다음이없는 대체 버전 ggplot2
:
means <- aggregate(weight ~ group, PlantGrowth, mean)
boxplot(weight ~ group, PlantGrowth)
points(1:3, means$weight, col = "red")
text(1:3, means$weight + 0.08, labels = means$weight)
출력 값을 사용할 수 있습니다. stat_summary()
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group))
+ geom_boxplot()
+ stat_summary(fun.y=mean, colour="darkred", geom="point", hape=18, size=3,show_guide = FALSE)
+ stat_summary(fun.y=mean, colour="red", geom="text", show_guide = FALSE,
vjust=-0.7, aes( label=round(..y.., digits=1)))
stat_summary 내의 함수를 사용하여 평균을 계산하고 hjust 인수를 사용하여 텍스트를 배치 할 수도 있습니다. 추가 함수는 필요하지만 추가 데이터 프레임은 필요하지 않습니다.
fun_mean <- function(x){
return(data.frame(y=mean(x),label=mean(x,na.rm=T)))}
ggplot(PlantGrowth,aes(x=group,y=weight)) +
geom_boxplot(aes(fill=group)) +
stat_summary(fun.y = mean, geom="point",colour="darkred", size=3) +
stat_summary(fun.data = fun_mean, geom="text", vjust=-0.7)
Magrittr 방식
이미 받아 들여진 답변이 있다는 것을 알고 있지만 magrittr 패키지 의 도움으로 단일 명령으로 멋진 방법을 보여주고 싶었습니다 .
PlantGrowth %$% # open dataset and make colnames accessible with '$'
split(weight,group) %T>% # split by group and side-pipe it into boxplot
boxplot %>% # plot
lapply(mean) %>% # data from split can still be used thanks to side-pipe '%T>%'
unlist %T>% # convert to atomic and side-pipe it to points
points(pch=18) %>% # add points for means to the boxplot
text(x=.+0.06,labels=.) # use the values to print text
이 코드는 평균이 포인트와 값으로 인쇄 된 상자 그림을 생성합니다.
명령을 여러 줄로 분할하여 각 부분이 수행하는 작업에 대해 설명 할 수 있지만 한 줄로 입력 할 수도 있습니다. 내 요점 에서 이에 대해 자세히 알아볼 수 있습니다 .
참조 URL : https://stackoverflow.com/questions/19876505/boxplot-show-the-value-of-mean
반응형
'Programing' 카테고리의 다른 글
Twitter 부트 스트랩과 Angular.js의 실제 (또는 숨겨진) 차이점 (0) | 2021.01.11 |
---|---|
C ++ Qt-qmake에 의해 생성 된 makefile에“-std = c ++ 11”을 추가하는 방법은 무엇입니까? (0) | 2021.01.11 |
JPG 이미지에서 작동하는 동안 "모드 P를 JPEG로 쓸 수 없음"이 표시됨 (0) | 2021.01.11 |
행당 3 개의 열을 표시하려면 어떻게해야합니까? (0) | 2021.01.11 |
문자열을 숫자 node.js로 변환 (0) | 2021.01.11 |