[r] ggplot geom_text 글꼴 크기 제어

ggplot2다음과 같은 작업을 수행하여 막대 플롯의 레이블에 대해 글꼴을 10으로 변경하려고했습니다 .

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") +
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)

그러나 결과 이미지는 막대 그림 레이블에 대해 매우 큰 글꼴 크기를 갖습니다.

그런 다음 이것을 수정하려고 생각 geom_text()했습니다.

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")

라벨 글꼴이 더 커졌습니다 …

크기 geom_text를 3과 같이 변경할 수 있으며 이제 축 레이블과 유사한 글꼴 10처럼 보입니다.

무슨 일이 일어나고 있는지 궁금 해요? 합니까는 theme(text=element_text(size=10))라벨에 적용되지 않습니다?

그리고 왜 10 인치의 크기가의 크기와 geom_text()다른 theme(text=element_text())가요?



답변

다음은 텍스트 / 라벨 크기를 변경하는 몇 가지 옵션입니다.

library(ggplot2)

# Example data using mtcars

a <- aggregate(mpg ~ vs + am , mtcars, function(i) round(mean(i)))

p <- ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) +
            geom_bar(stat="identity",position="dodge") +
            geom_text(data = a, aes(label = mpg),
                            position = position_dodge(width=0.9),  size=20)

size에서는 geom_text의 크기 변경 geom_text레이블.

p <- p + theme(axis.text = element_text(size = 15)) # changes axis labels

p <- p + theme(axis.title = element_text(size = 25)) # change axis titles

p <- p + theme(text = element_text(size = 10)) # this will change all text size 
                                                             # (except geom_text)

이를 위해 geom_text ()의 10 크기가 theme (text = element_text ())의 크기와 다른 이유는 무엇입니까?

예, 다릅니다. 빠른 수동 확인을했는데 geom_text크기 대 theme크기 의 비율이 ~ (14/5) 인 것 같습니다 .

따라서 균일 한 크기에 대한 끔찍한 수정은이 비율로 확장하는 것입니다.

geom.text.size = 7
theme.size = (14/5) * geom.text.size

ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) +
  geom_bar(stat="identity",position="dodge") +
  geom_text(data = a, aes(label = mpg),
            position = position_dodge(width=0.9),  size=geom.text.size) +
  theme(axis.text = element_text(size = theme.size, colour="black"))

물론 이것은 이유를 설명 하지 않습니까? 그리고 피타입니다 (이 작업을 수행하는 더 합리적인 방법이 있다고 가정합니다)


답변