본문 바로가기
카테고리 없음

R에서 각종 차트 그리는 법 ( R Chart Draw ) + 보고서 이쁘게 만들기

by 수메르 여행자 2024. 3. 12.

안녕하세요

R 이라고 하는 언어를 아시나요? R은 통계학 교수들이 만든 언어 중 하나로 다중 데이터 분석을 편리하게 하는 기법입니다

오늘은 이걸 이용해서 간단한 그래프를 그려보도록 하겠습니다

 

+ 사실 파이썬이고 뭐고 R이 그래프가 제일 이쁩니다 ( 개인취향일 수 있음 )

 

파이차트 ( Pie Chart )

fab <- c(4,2,1,2,2,3,3,2,1,1)
table(fab)
pie(table(fab))

 

간단하죠?

요걸 전부 실행하면 위와 같은 그림이 그려집니다

 

fab <- c(4,2,1,2,2,3,3,2,1,1)
table(fab)
pie(table(fab))

 

이 코드를 해석하면

 

fab <- c(4,2,1,2,2,3,3,2,1,1)

# fab 변수에 리스트 ( 파이썬으로 따지면 ) 을 넣고 저장

 

table(fab)

# 도수분포표 그리기

 

fab
1 2 3 4 
3 4 2 1 

 

이런 결과 도출

pie(table(fab))

# 도수분포표를 토대로 원그래프 생성

 

이라고 할 수 있습니다

 

간단하죠?

문법 자체만 보면 그 어떤 언어보다 쉬운 시각화 툴이라고 할 수 있습니다

 

바 플롯

barplot(table(fab), names=c('봄','여름','가을','겨울'), col=c('pink','skyblue','tomato','white'),main='계절 선호도 조사', sub='계절')

 

이 코드를 보면 더 이해하기 쉬울겁니다

여기서 names 는 각각의 xlabel 을 의미하고 col의 경우에는 색상을 지정하는 요소이죠

main은 제목으로 사용됩니다

sub는 보조 제목으로 이해하시면 될 것 같습니다

 

요걸 실행하면 아까의 도수분포표 테이블을 바탕으로 위와 같은 모습이 도출되죠

히스토그램

pie(table(fab), main='fab season')

 

그러면 히스토그램을 그리기 위해 데이터를 만들어봅시다

fab.col <- c(2,3,2,1,1,2,2,1,3,2,1,3,2,1,2)
fab.col

 

파이썬에서는 금기의 기술이지만 r에서는 이런 문법도 사용 가능합니다

이걸 실행하면

 

  1. 2
  2. 3
  3. 2
  4. 1
  5. 1
  6. 2
  7. 2
  8. 1
  9. 3
  10. 2
  11. 1
  12. 3
  13. 2
  14. 1
  15. 2

이런 식으로 데이터가 저장됩니다

[ 인덱스 ] : [ 값 ] 의 관계로 저장되며 파이썬에서는 첫 번째 인덱스가 0이지만, R에서는 1이라는 것을 알 수 있죠

 

hist(table(fab.col))

 

네 히스토그램에 별도의 값을 주지 않으면 위와 같이 만들면 끝입니다 + 색상 및 옵션 줄 수 있음

 

그러면 이제 제대로 된 데이터로 해봅시다

 

dist <- cars[,2]

이런 식으로 내장된 cars라는 데이터셋에서 dist 열의 데이터를 불러와 저장하면 dist에 데이터가 담깁니다

 

hist(table(dist), col=c('pink','skyblue','purple','white', 'purple'), main='제동거리 히스토그램')

요런 식으로 아까 알려드린 값을 주면!

뿅 하고 이런 테이블이 나오죠

 

hist(table(dist), col=c('pink','skyblue','purple','white', 'purple'), 
     main='제동거리 히스토그램',
    border="pink")

 

이런 코드로 보더를 색상 지정할 수도 있습니다

 

border = "color" - 보더 (테두리) 색 변경
col = "color" - 막대 색
las = "int" - 텍스트 방향(x축)
break = "count" - 막대 수

 

요것만 외우면 별걸 다 그릴 수 있습니다

 

 

박스플롯

박스 플롯은 더 간단하긴 한데 이것만 알면 됩니다

 

boxplot(table(dist), main='자동차 제동거리', xlab='chart', ylab='data')

 

쨘 이게 다죠

 

이걸 이용하면

boxplot(Petal.Length~Species, data=iris, col=c('pink','skyblue','purple'), main='품종별 꽃잎의 길이')

 

이런 식으로 품종 별 꽃잎의 길이를 그릴 수 있습니다

 

다중 그래프 출력

다중 그래프는 R에서는 par 함수를 통해 설정합니다

par(mfrow = c(1, 3))

par(mfrow = c(1, 3))
barplot(table(mtcars$carb), col='pink', 
        main='carb의 빈도표',
       xlab='Of carb',
       ylab='Frequency')

barplot(table(mtcars$cyl),
       col='skyblue',
       xlab='of Cylender',
       ylab='Frequenc')

barplot(table(mtcars$gear),
       main='the gear graph',
       xlab='기어 종류',
       ylab='기어의 수')

 

 

자료

오늘 제가 알려드린 것에 대한 정보는 제 깃허브에서 찾을 수 있고

해당 링크로 들어오면 자료가 있습니다

 

https://github.com/layla-focalors/r_learning_mx/blob/main/coffee.ipynb

 

궁금한 점이 있다면 issue 혹은 질문으로 알려주세요!