혼공 R_6주차 데이터 시각화: ggplot2 패키지

Martinita·2025년 2월 20일
0

* 데이터 시각화

-> 복잡해 보이는 수치 데이터를 이미지화 하여 시각적 이해 도움

  • ggplot2 패키지는 R 시각화 패키지 1순위로 gglpot() 함수를 활용
  • 그래프 기본 틀 만들기: ggplot() 함수
ggplot(데이터 세트, aes(데이터 속성) 

library(ggplot2)
str(airquality)
ggplot(airquality, aes(x=Day, y=Temp)) ->여기서 Day day로 써서 오류남 


일단 이렇게 plots 탭에 아무 것도 그려지지 않은 상태로 그래프 틀이 생성됨. str() 함수로 airquality 데이터 세트의 속성을 확인하고, 이후에 날짜별 온도 시각화를 위해서 날짜Day와 온도Temp를 매핑함.

  • 산점도 그리기: geom_point() 함수
    두 변수의 관계를 파악하기 위해 평면에 관측점을 찍어 표현함.
    ggplot 함수 뒤에 + geom_point()만 추가하면 됨.
ggplot(airquality, aes(x=Day, y=Temp)) + geom_point()


그러면 이렇게 산점도가 표현 됨. 물론 아래처럼 사이즈랑 색상 변경도 가능(이번엔 연두색으로 표현!)

ggplot(airquality, aes(x=Day, y=Temp)) + geom_point(size=2.5, color="yellowgreen")

  • 선 그래프 그리기: geom_line() 함수
ggplot(airquality, aes(x=Day, y=Temp)) + geom_line()

ggplot(airquality, aes(x=Day, y=Temp)) + geom_line(size=1.5, color="navy") -> 사이즈 및 색상 조정


  • 막대 그래프 그리기: geom_bar()
ggplot(mtcars, aes(x = cyl)) + geom_bar(width=0.75, color="hotpink")
width -> 두께를 지정하는 옵션 

빈 범주를 제외하고 싶다면 str() 함수로 cyl 데이터 속성 파악 가능
이후에 factor 함수 활용 
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(width=0.75, color="purple")

막대그래프는 x축만 지정해서 그리면 됨. 이번엔 mtcats 데이터에서 cyl종류별 빈도수 확인을 위해서 그림.

이렇게 빈도 그래프가 나옴, 여기서는 색상을 핫핑크로 넣었는데 겉에 테두리가 색칠 되어서 나왔다.


factor()를 활용하면, 빈 범주를 제외한 그림이 그려짐

  • 누적 막대그래프 그리기
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(aes(fill = factor(gear) ))


geom_bar() 함수 안에 aes() 함수를 넣어 누적할 열을 지정함
-> gear변수의 빈도가 막대 안에 들어가게 된 상황임.

  • 누적 막대그래프로 선버스트 그래프 그리기
ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(aes(fill = factor(gear) )) + coord_polar()   


coord_polar() 함수를 추가하면 그래프를 선버스트 차트로 변환함. 이는 계층 구조의 데이터를 수준 별로 비율을 표시하는 그래프임.

그리고 위의 코드에서 theta="y" 옵션을 추가하면 도넛 형 선버스트 차트로 변환됨.

ggplot(mtcars, aes(x = factor(cyl) )) + geom_bar(aes(fill = factor(gear) )) + coord_polar(theta = "y") 

  • 상자그림 그리기: geom_boxplot() 함수
ggplot(airquality, aes(x=Day, y=Temp, group = Day)) + geom_boxplot()


group 옵션에 Day 변수를 지정해서 날짜 별로 온도 분포를 확인하는 그룹을 설정함

  • 히스토그램 그리기: geom_histogram() 함수
ggplot(airquality, aes(Temp)) + geom_histogram()

ggplot(airquality, aes(Temp)) + geom_histogram(binwidth=1)


도수 분포를 기둥 모양 그래프로 표현한 히스토그램 그래프는 이렇게 만듦. 막대 구간 조정을 위해서는 binwidth 옵션을 사용 -> 숫자가 커질수록 막대가 두꺼워짐.

6주차 기본 과제

  • 그래프에 그래프 더하기: ggpolt2는 레이어로 구성됨
ggplot(airquality, aes(x=Day, y=Temp, group = Day)) + geom_line() + geom_point()-> 선그래프와 산점도 같이 그리기

ggplot(airquality, aes(x=Day, y=Temp, group = Day)) + geom_line(color="lightblue") + geom_point(size=2.5, color="lightpink")


6주차 추가 과제

ggmap() 함수를 활용해서 구글 API에서 원하는 장소를 불러와서 지도로 그래프 그리기

library(ggmap)
register_google(key="AIzaSyDaDY2uzhA--b8edctrLJFgxlnzk6kbEV8")
gg_seoul <- get_googlemap("seoul", maptype="satellite")
ggmap(gg_seoul)

라고 적었지만... 이전에 만들어 놓은 API가 문제인가 계속 오류 문구가 뜬다

이런건 어떻게 해결해야 하나 API를 삭제하고 다시 만들려고 했는데 해외 계정으로 되어 있어서 자꾸 결제 등록에 오류가 발생한다 ㅜㅜ

  • 혼공R 소감!
    벌써 혼공학습단의 6주차가 지나갔다. 처음 혼공R을 시작할 때 주어진 기간 동안 꾸준히 할 수 있을까에 대한 의구심이 강했지만, 조금씩 천천히 한 주씩 해 나가다 보니 벌써 완주에 이르렀다. 마지막 과제도 잘 해결해보려고 했는데 API가 말썽이다. 해결 되는 대로 다시 마무리 해봐야겠다! 6주 동안 조금씩 꾸준히 한 보람이 있었던 혼공학습단 다음에도 기회가 된다면 다른 코스로 도전해보고 싶다.

0개의 댓글