ggplot geom_text 글꼴 크기 제어


93

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())가요?

답변:


141

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

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")) 

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


2
흥미롭게도 14/5 비율을 확인하기 위해 무엇을 확인 했습니까?
olala 2014-07-31

34
내가 참조. 최근 읽은 글이 생각 나는데, 단위 차이 인 것 같아요. geom_text 기본값 5는 5mm이고 theme () 크기 단위는 포인트입니다. 1 point는 1/72 inch = 0.35mm이므로 geom_text ()의 1은 1mm, 1 / 0.35 = ~ 14/5 :)
olala

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.