본문 바로가기
6. 데이터 시각화 - ggplot2/선그래프

[ggplot2] 선 그래프 여러개 겹쳐그릴 때 범례 순서 바꾸는 법

by makhimh 2023. 1. 14.
반응형

여러가지 자유도로 t분포 그래프를 그려보았습니다. 하나의 그래프에 그래고 범례도 표시했습니다. 표준정규분포 그래프도 함께 그렸습니다. 

 

library(tidyverse)

x1=seq(-4,4,0.1)
y1=dnorm(x1)
y2=dt(x1,5)
y3=dt(x1,15)
y4=dt(x1,30)

ggplot()+
  geom_line(aes(x=x1,y=y1,color='normal'))+
  geom_line(aes(x=x1,y=y2,color='t df=5'))+
  geom_line(aes(x=x1,y=y3,color='t df=15'))+
  geom_line(aes(x=x1,y=y4,color='t df=30'))+
  theme(legend.position = 'top')

 

 

문제는 범례가 알파벳과 숫자 순으로 정렬된다는 것이었습니다. t5 t15 t30 순서대로 하고 싶었습니다. scale_fill_discrete 함수에서 break 옵션을 설정해주는 방법이 있었는데, 이걸 사용하려면 데이터프레임 형태로 독립/종속 변수화 시켜야 했습니다. 데이터를 그렇게 바꿔주었습니다. 

 

library(tidyverse)

x1=seq(-4,4,0.1)
y1=dnorm(x1)
y2=dt(x1,5)
y3=dt(x1,15)
y4=dt(x1,30)

lab=c(rep('normal',length(x1)),
      rep('t df=5',length(x1)),
      rep('t df=15',length(x1)),
      rep('t df=30',length(x1))
)

df=data.frame(lab,X=c(x1,x1,x1,x1),Y=c(y1,y2,y3,y4))

ggplot(df,aes(X,Y,color=lab))+
  geom_line()+
  scale_color_discrete(name='',breaks = c("normal", "t df=5", "t df=15", "t df=30"))

 

순서가 아래와 같이 바뀝니다. 

 

반응형

댓글