반응형
파이차트 in R
지난 포스팅에서 범주형 자료를 표현하는 방법에 대해 알아보았다.
이번에는 그 방법 중 하나인 파이차트에 대해 알아보겠다.
1. 파이차트란?
파이차트란? 먼저 원을 그리고 이 원을 상대도수에 비례하여 중심각을 나누어 마치 파이의 조각을 나눈 것과 같은 형태를 갖도록 하는 그림이다.
예시)
한 회사에서 새로 개발한 자동차의 외형에 대하여 고객 150명을 임의로 뽑아 선호도를 조사하였다.
150명 중에서 71명은 좋다고 답하고, 42명은 그저 그렇다고 하고, 28명은 싫다고 하고, 9명은 답을 하지 않았다.
조사에 대한 파이차트를 작성하라.
① 도수분포표 작성
답 | 도수 | 상대도수 |
좋다 | 71 | 0.473 (=71/150) |
그저 그렇다 | 28 | 0.280 |
싫다 | 28 | 0.187 |
무응답 | 9 | 0.060 |
합 | 150 | 1.000 |
② 도수분포표의 상대도수로 파이차트 작성
2. 파이차트 in R (basic)
위 예제를 R에서 구현하면 다음과 같다.
① data 생성
1 2 3 | data <- data.frame("답"=c("좋다","그저 그렇다","싫다","무응답"), "도수"=c(71,42,28,9)) data$'상대도수'<-round(data$도수/150,3) | cs |
> data
답 도수 상대도수
1 좋다 71 0.473
2 그저 그렇다 42 0.280
3 싫다 28 0.187
4 무응답 9 0.060
② pie chart
1 | pie(data$상대도수) | cs |
- 라벨 추가
1 | pie(data$상대도수, labels=data$답) | cs |
- 라벨에 상대도수 추가
1 2 | pie(data$상대도수, labels=paste(data$답, round(data$상대도수*100,1),"%")) | cs |
3. pie chart in ggplot
① basic
1 2 3 | ggplot(data, aes(x = "", y = 상대도수, fill = 답)) + geom_bar(width = 1, stat = "identity") + coord_polar("y") | cs |
② 나눠지는 부분 흰색 선 추가
1 2 3 | ggplot(data, aes(x = "", y = 상대도수, fill = 답)) + geom_bar(width = 1, stat = "identity", color = "white") + coord_polar("y") | cs |
③ theme 숨기기
1 2 3 4 | ggplot(data, aes(x = "", y = 상대도수, fill = 답)) + geom_bar(width = 1, stat = "identity", color = "white") + coord_polar("y") + theme_void() | cs |
④ 그래프에 상대도수에 대한 text 추가
1 2 3 4 5 6 | ggplot(data, aes(x = "", y = 상대도수, fill = 답)) + geom_bar(width = 1, stat = "identity", color = "white") + coord_polar("y") + geom_text(aes(label = paste0(round(상대도수*100,1),"%")), position = position_stack(vjust = 0.5)) + theme_void() | cs |
⑤ change color
1 2 3 4 5 6 7 | ggplot(data, aes(x = "", y = 상대도수, fill = 답)) + geom_bar(width = 1, stat = "identity", color = "white") + coord_polar("y") + geom_text(aes(label = paste0(round(상대도수*100,1),"%")), position = position_stack(vjust = 0.5)) + scale_fill_manual(values = c("red","orange","green","blue")) + theme_void() | cs |
반응형
'R' 카테고리의 다른 글
[R] R에서 eval() 함수로 표현식 실행하기 (eval in R) (0) | 2019.09.18 |
---|---|
[R] R에서 문자열 합치기 or list의 모든 element 하나로 합치기 (paste in R) (0) | 2019.09.17 |
[R] 수평선, 수직선 in ggplot (add horizontal line, vertical line in ggplot2) (0) | 2019.09.05 |
[R] 막대그래프란? R에서 막대그래프 그리기 (Bar Chart in R) (0) | 2019.09.01 |
[R] 도수분포표란? (frequency table in R) (0) | 2019.08.30 |