IT이야기

ggplot2를 사용하여 R의 geom_bar 위에 레이블을 넣는 방법

cyworld 2021. 10. 1. 21:25
반응형

ggplot2를 사용하여 R의 geom_bar 위에 레이블을 넣는 방법


geom_bar그래프 위에 레이블을 몇 개 쌓고 싶습니다 . 다음은 예입니다.

df <- data.frame(x=factor(c(TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE)))
ggplot(df) + geom_bar(aes(x,fill=x)) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),axis.title.x=theme_blank(),legend.title=theme_blank(),axis.title.y=theme_blank())

지금

테이블(df$x)

FALSE  TRUE 
    3     5 

두 막대 위에 3과 5를 표시하고 싶습니다. 백분율 값도 가질 수 있다면 더 좋습니다. 3 (37.5%)5 (62.5%). 이렇게: (출처: skitch.com )

이게 가능해? 그렇다면 어떻게?


ggplot의 많은 작업과 마찬가지로 일반적인 전략은 변수가 플롯의 변수 및 미학과 일치하는 방식으로 플롯에 추가하려는 항목을 데이터 프레임에 넣는 것입니다. 예를 들어 다음과 같은 새 데이터 프레임을 생성합니다.

dfTab <- as.data.frame(table(df))
colnames(dfTab)[1] <- "x"
dfTab$lab <- as.character(100 * dfTab$Freq / sum(dfTab$Freq))

있도록 x변수에서 해당 변수를 일치 df, 등등. 그런 다음 다음을 사용하여 간단히 포함합니다 geom_text.

ggplot(df) + geom_bar(aes(x,fill=x)) + 
    geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) +
    opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),
        axis.title.x=theme_blank(),legend.title=theme_blank(),
        axis.title.y=theme_blank())

이 예에서는 백분율만 표시하지만 다음 paste과 같이 카운트도 함께 표시 할 수 있습니다 .

dfTab$lab <- paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ")

현재 버전의 ggplot2에서는 opts더 이상 사용되지 않으므로 themeand element_blanknow를 사용 합니다.


A의 텍스트를 플롯하려면, ggplot당신은을 사용합니다 geom_text. 그러나 먼저 다음을 사용하여 데이터를 요약하는 것이 도움이 됩니다.ddply

dfl <- ddply(df, .(x), summarize, y=length(x))
str(dfl)

데이터가 미리 요약되어 있으므로 stat="identity"매개변수를 geom_bar다음에 추가하여 변경해야 합니다 .

ggplot(dfl, aes(x, y=y, fill=x)) + geom_bar(stat="identity") +
    geom_text(aes(label=y), vjust=0) +
    opts(axis.text.x=theme_blank(),
        axis.ticks=theme_blank(),
        axis.title.x=theme_blank(),
        legend.title=theme_blank(),
        axis.title.y=theme_blank()
)

여기에 이미지 설명 입력

참조URL : https://stackoverflow.com/questions/6455088/how-to-put-labels-over-geom-bar-in-r-with-ggplot2

반응형