ggplot을 어떤 원리로 그리는지 알았고(feat.기초편)
ggplot의 테마를 어떻게 바꾸는지도 알았습니다.(feat.심화편)
그럼 이제 한번 원하는 그래프를 그려보도록 하겠습니다.
*사용한 데이터는
gcookbook의 'tophitters2001'입니다.
미국 2001년 메이저리그 top hitter들에 관한 데이터 입니다.
우선 설계를 해보도록 하겠습니다.
1. x축과 y축, 어떤 변수 사용할거야?
그래프는 2차원 데이터 입니다. x축과 y축에 어떤 변수를 놓을지가 가장 중요하고 기초적인 작업입니다.
avg를 x축으로 name을 y축으로 하겠습니다.
이 설정은 어떻게 넣엇죠??!
aes(x=변수명, y=변수명)를 사용했습니다.
2. 그래프 모양은 어떤걸로 할거야??
x축과 y축 변수를 선택했으니, 이제 어떤 그래프를 사용할지 정할 차례입니다.
x와 y의 관계를 보기 위해서 주로 산점도를 이용합니다.
그림에서도 점이 있으니, geom_point를 사용하겠습니다.
그런데 점과 Y축을 잇는, 저 선은 무엇일까요???
geom_segment를 이용하면 막대 그래프처럼 생긴 선이 생깁니다.
따라서 그래프 모양은
geom_point와 geom_segment 2개를 사용하겠습니다.
3. NL AL이 있네??
NL은 National League
AL은 American League 뜻입니다.
야구 선수의 평균 타율을 NL과 AL로 나눠서 보고 싶은데..... 어떻게 할까요?
바로바로!!!! 면분할을 이용하면 됩니다.
facet_grid를 통해 NL과 AL로 나눠서 보겠다를 해주면 됩니다.
facet_grid(y축~x축)
4. NL AL 이 2개 색은 어떻게 입히지?
그림을 보면, NL은 파란색, AL은 빨간색으로 표시되어 있는 것을 볼 수 있습니다.
이 때 써주는 옵션은 다음과 같습니다.
scale_colour_brewer(palette = "Set1", limits=c("NL", "AL"), guide=FALSE)
***scale_colour_brewer
palette(팔레트)는 말그대로 물감입니다. set1 팔레트를 쓰겠다는 뜻입니다.
(노랑 빨강 하는 것처럼 set1은 파레트 이름입니다.)
범주는 limits로 한계를 걸어둡니다.
guide는 범례를 표시와 관련있는 옵션입니다.
디폴트는 guide = true이고 이 경우에, 범례가 생깁니다ㅎㅎ
그런데 이미 우리는 facet_grid로 al과 nl을 나눴기 떄문에 굳이 필요없는 정보여서
guide=FALSE로 지우도록 하겠습니다.
5. grid선
뒤에 격자(grid)가 major.x만 남아있네!
나머지 grid선은 지워주겠습니다.
'지워주는 옵션은 theme함수를 쓰고 그 안에 panel.grid.major.y=element_blank() 였었지'가 떠오르신다면
당신은 이제 전문가~!!!!
6.배경색
배경이 흰색이네
theme_bw()를 추가해주겠습니다.
최종 코드
ggplot(tophit, aes(avg, name)) +
geom_segment(aes(yend=name), xend=0, colours="gray50") +
geom_point(size=3, aes(colour=lg)) +
scale_colour_brewer(palette = "Set1", limits=c("NL", "AL")) +
theme_bw()+
theme(panel.grid.major.y = element_blank()) +
facet_grid(lg~., scales = "free_y", space = "free_y")
'R' 카테고리의 다른 글
[R] R Studio가 갑자기 느려질 때 (0) | 2019.06.11 |
---|---|
[R] 데이터 불러오기 (0) | 2019.05.29 |
[R]ggplot2에 대해 파헤쳐 보자!!(feat.심화편) (0) | 2019.05.23 |
[머신러닝] 회귀분석 in R (0) | 2019.05.12 |
[R] ggplot2에 대해 파헤쳐 보자!!(feat.기초편) (0) | 2019.04.04 |