ggplot2에서 글꼴 크기 및 축 텍스트 방향 변경


188

x 축에 categorical 형 변수와 y 축에 숫자 변수가있는 그래프를 플로팅하고 있습니다.

x 축의 경우 데이터 포인트가 많을 경우 기본 텍스트 형식으로 인해 각 눈금 표시의 레이블이 다른 레이블과 겹치게됩니다. (a) 축 텍스트의 글꼴 크기를 변경하고 (b) 텍스트가 축에 수직이되도록 텍스트 방향을 변경하려면 어떻게합니까?



stackoverflow.com/q/1330989/946850 과 겹치지 만 해당 질문은 텍스트 크기 조정에 대해서는 다루지 않습니다.
krlmlr

답변:


292

사용 theme():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
    theme(text = element_text(size=20),
        axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful

여기에 이미지 설명을 입력하십시오

여기에서 ggplot의 형식을 지정하는 방법에 대한 좋은 정보가 많이 있습니다 . 을 사용하여 수정할 수있는 전체 매개 변수 목록 (기본적으로 모든 매개 변수)을 볼 수 있습니다 ?theme.


2
나는 그것이 있어야한다고 생각합니다 hjust=1.
Artem Sokolov

진실! Artem의 의견에 따라 수정되었지만 이미지를 업데이트하지 않았습니다.
Drew Steen

67

Ditto @Drew Steen의 사용 theme(). 축 텍스트 및 제목에 대한 공통 테마 속성은 다음과 같습니다.

ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
  geom_point()+
  theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))

19

테마 사용 () :

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))

19

이전 솔루션에 추가하면, 당신은 또한 글꼴 크기를 지정할 수 있습니다 상대 받는 base_size등 테마에 포함 theme_bw()(여기서 base_size를 사용하여 11입니다)rel() 기능을.

예를 들면 다음과 같습니다.

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))

5

많은 플롯을 만들 때 전역으로 설정하는 것이 좋습니다 (관련 부분은 두 번째 줄, 세 줄이 함께 작동하는 예).

   library('ggplot2')
   theme_update(text = element_text(size=20))
   ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()

4

"fill"속성을 사용하면 이와 같은 경우에 도움이됩니다. element_blank()범례를 사용하여 여러 색상 막대 차트를 표시하고 표시 하여 축에서 텍스트를 제거 할 수 있습니다 . 다음과 같이 수리점에서 부품 제거 빈도를 플로팅합니다.

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x  = element_blank())

막대 차트에 막대가 많고 읽을 수 있고 서로 겹치지 않을 정도로 작은 적절한 글꼴 크기를 찾을 수 없었기 때문에이 경우에는이 솔루션을 사용했습니다.


0

겹치는 레이블을 처리하는 다른 방법은을 사용하는 것 guide = guide_axis(n.dodge = 2)입니다.

library(dplyr)
library(tibble)
library(ggplot2)

dt <- mtcars %>% rownames_to_column("name") %>% 
  dplyr::filter(cyl == 4)

# Overlapping labels
ggplot(dt, aes(x = name, y = mpg)) + geom_point()

여기에 이미지 설명을 입력하십시오

ggplot(dt, aes(x = name, y = mpg)) + geom_point() +
  scale_x_discrete(guide = guide_axis(n.dodge = 2))

여기에 이미지 설명을 입력하십시오

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