농업생물통계/R Studio

[R Studio] 꺽은선 그래프 꾸미기(feat. tidyverse/ggplot2)

꿈꾸 2021. 12. 10. 06:45
반응형

2020년 1월 서울과 부산의 평균, 최저, 최고 기온 데이터를 이용해 R Studio로 꺽은선 그래프를 만들어 보려고 합니다.

 

먼저 tidyverse와 ggplot2 패키지를 불러옵니다. 

 

library(tidyverse)

library(ggplot2)

 

 

그 다음 다음의 기온 데이터를 불러옵니다.

 

 

read_csv()를 이용합니다. 불러온 데이터는 temp_sb라고 저장하겠습니다.

 

 

먼저 앞서 배운대로 중첩된 꺽은선 그래프를 그려줍니다.

 

그 내용은 아래 포스팅을 참고하세요.

https://statti.tistory.com/13

 

[R Studio] 꺽은선 그래프 여러개 중첩해서 그리기2(심화)(feat. ggplot2)

저번 포스팅에서 산점도와 꺽은선 그래프를 중첩해서 그리는 방법을 알아보았습니다. 오늘은 좀 더 심화과정으로 꺽은선 그래프를 선의 색깔과 선의 모양 두개 모두를 달리해서 그려보겠습니

statti.tistory.com

 

명령어는 다음과 같습니다.

 

 

그러면 다음과 같은 그래프가 나타납니다.

 

 

x축과 y축에 단위가 없습니다. 따라서 우선 축 이름을 바꿔보겠습니다. 

 

labs() 함수를 이용합니다.

 

labs(x="x축 이름", y="y축 이름")을 추가로 입력해줍니다.

 

 

그러면 x축과 y축 이름이 다음과 같이 바뀝니다.

 

 

다음으론 선의 색을 바꿔보겠습니다.

 

scale_colour_manual()을 이용합니다.

 

scale_colour_manual(name="Location", values = c("blue", "red"), labels = c("Seoul", "Busan")))를 입력합니다.

 

 

다음과 같이 선의 색깔이 바뀝니다.

 

 

다음은 범례를 꾸며주겠습니다.

 

theme() 함수를 이용합니다.

 

먼저 범례의 위치를 바꿔줍니다. theme(legend.position = c(0,0))을 먼저 입력해줍니다.

 

 

그러면 범례의 위치가 왼쪽 아래로 바뀝니다. 이는 (0,0)을 입력했기 때문입니다. 좌표평면을 생각하면 이해하기 쉬울 것 같습니다. 즉 처음 숫자가 가로 위치, 두번째 숫자가 세로 위치를 결정합니다.

 

 

저는 범례의 위치를 오른쪽 아래로 하고 싶습니다. 숫자를 조절해가면서 위치가 변경되는 것을 보고, 최종적으로 위치를 결정지어 주면 됩니다. 

 

 

 

범례가 두 개이기 때문에 세로로 나열됩니다. 현재 그래프 상에서는 세로로 나열되면 그래프 선을 가리게 되거나 범례가 그래프 밖으로 벗어나니 범례를 가로 배열로 바꾸고 싶습니다.

 

theme(legend.box = "horizontal")을 입력해줍니다.

 

 

 

다음으론 범례 제목을 한번 없애보겠습니다. theme(legend.title = element_blank())를 입력합니다.

 

 

 

범례의 제목은 없어졌지만 공간은 그대로 남아있네요. 범례 제목 공간을 없애보겠습니다. theme(legend.spacing.y = unit(0, "mm"))를 입력합니다.

 

 

 

다음은 범례에 실선의 테투리를 둘러주고 바탕색은 하얀색으로 설정하겠습니다.

theme(legend.background = element_rect(fill='white', size=0.5, colour='black', linetype='solid'))를 입력합니다. 

 

 

 

얼추 범례 부분은 완성해갑니다. 마지막으로 선 모양과 선 색깔 부분을 나타내는 곳의 바탕을 흰색으로 바꿔보겠습니다. theme(legend.key = element_rect(fill='white', colour='white'))를 입력합니다.

 

 

다음은 그래프 바탕을 흰색으로 바꾸고, 테두리를 둘러보겠습니다. 

 

theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_rect(fill='white', colour = 'black'))을 입력해줍니다.

 

 

 

마지막으로 글씨의 크기를 바꿔보겠습니다.

 

먼저 축의 글씨 크기를 바꿔줍니다. theme(axis.text = element_text(size=15))를 입력합니다. size의 숫자를 바꿔주면 글씨의 크기가 커지거나 작아집니다.

 

 

 

그 다음은 x축과 y축 이름과 범례 내용의 글씨 크기를 키워보겠습니다. theme(text = element_text(size=18))를 입력합니다.

 

 

 

 

 

반응형