Rose plot with ggplot2
문건웅
May 10, 2016
통계마당에 올라온 김지형선생님의 plot http://statistics4everyone.blogspot.kr/2016/05/nightingale-rose-plot.html을 R의 ggplot2로 다시 그려보았습니다. 사용한 데이타는 다음과 같습니다.
data=read.csv("untitled.csv")
data
X A B C D E F G
1 January 10 9.0 8 7.0 6 5.0 4
2 February 5 4.5 4 3.5 3 2.5 2
3 March 7 6.0 5 4.0 3 2.0 2
4 April 9 7.0 8 7.0 6 5.0 4
5 May 11 8.0 4 3.5 3 2.5 2
6 June 13 9.0 5 4.0 3 2.0 2
7 July 15 10.0 8 7.0 6 5.0 4
8 August 17 11.0 4 3.5 3 2.5 2
9 September 19 12.0 5 4.0 3 2.0 2
10 October 21 13.0 8 7.0 6 5.0 4
11 November 23 14.0 4 3.5 3 2.5 2
12 December 25 15.0 5 4.0 3 2.0 2
13 NA NA NA NA NA NA NA
14 NA NA NA NA NA NA NA
15 NA NA NA NA NA NA NA
16 NA NA NA NA NA NA NA
17 NA NA NA NA NA NA NA
18 NA NA NA NA NA NA NA
19 NA NA NA NA NA NA NA
20 NA NA NA NA NA NA NA
21 NA NA NA NA NA NA NA
데이타를 이용하여 그림을 그리려면 행과 열을 바꾸고 long form으로 변환해주어야 합니다.
require(reshape2)
data=data[1:12,]
data1=data.frame(t(data))
data2=data1[2:8,]
colnames(data2)=month.name
data2$group=row.names(data2)
data3=melt(data2,id="group")
data3$value=as.numeric(data3$value)
head(data3)
group variable value
1 A January 10
2 B January 9
3 C January 8
4 D January 7
5 E January 6
6 F January 5
먼저 bar plot을 그린후 coord_polar()로 변환해주는 것이 이해하기 쉽습니다.
require(ggplot2)
ggplot(data=data3,aes(x=variable,y=value,fill=group))+
geom_bar(stat="identity")
색깔 palette 중 “Greens”를 적용해보면 다음과 같습니다.
ggplot(data=data3,aes(x=variable,y=value,fill=group))+
geom_bar(stat="identity")+
scale_fill_brewer(palette="Greens")+xlab("")+ylab("")
coord_polar()를 이용하여 좌표축을 원형 좌표계로 변환시킵니다.
ggplot(data=data3,aes(x=variable,y=value,fill=group))+
geom_bar(stat="identity")+
coord_polar()+
scale_fill_brewer(palette="Greens")+xlab("")+ylab("")
가독성을 좋게 하기 위해 bar의 width, colour 인수를 조절한 완성된 plot입니다.
ggplot(data=data3,aes(x=variable,y=value,fill=group))+
geom_bar(stat="identity",width=1,colour="black",size=0.1)+
coord_polar()+
scale_fill_brewer(palette="Greens")+
xlab("")+ylab("")
위의 plot은 value의 변화를 bar의 높이로 표현했습니다. 다음 plot은 value의 변화를 색깔로 표현한
heatmap입니다.
ggplot(data=data3,aes(x=variable,y=group,fill=value))+
geom_tile(colour="black",size=0.1)+
scale_fill_gradientn(colours=c("white","steelblue"))+
coord_polar()+xlab("")+ylab("")
두 그림의 차이가 눈에 보이시나요? heatmap을 보면 1월,4월,7월,10월에 A-G군의 value가 골고루 증가하였음을 알 수 있습니다. 반면 rose plot에서는 12월의 A,B의 높이가 커져 12월이 1월에 비해 높게 보입니다.
Comment 1
-
cardiomoon
2016.05.10 10:39
- Total
- 의학논문 작성을 위한 R통계와 그래프
- R을 이용한 조건부과정분석
- 웹에서 클릭만으로 하는 R통계분석
- Learn ggplot2 Using Shiny App
- 일반화가법모형 소개
- 밑바닥부터 시작하는 ROC 커브 분석
- 웹R을 이용한 통계분석
- 의료인을 위한 R 생존분석
No. | Subject | Author | Date |
---|---|---|---|
25 | 2판 출판 예정일 문의 [2] | pslee | 2024.01.23 |
24 | 2판 혹시 언제쯤 출간 예정일지요? [1] | 니콜라오 | 2023.10.13 |
23 | 2판 [1] | rlagurrn | 2023.01.27 |
22 | mytable 문의 [2] | 떠도는고라니 | 2022.12.20 |
21 | 제2판 출간소식을 기다립니다.. [1] | swpapa | 2021.04.05 |
20 | 책 구매 하려고 하는데 품절이 되서 구매할수 있는지 궁금합니다. [1] | 기드온 | 2020.07.30 |
19 | 메타분석 강의록 | cardiomoon | 2020.05.31 |
18 | 설문조사데이터 | cardiomoon | 2020.05.08 |
17 | 데이터 전처리 예제 | cardiomoon | 2020.05.08 |
16 | moonbook package 설치에 문제가 있는 건가요? [2] | KCRS_LeeJM | 2017.03.14 |
15 | 해결되지 않는 레이텍, ztable, moonbook2에 대해 질문 드립니다. [1] | neurojang | 2017.01.04 |
14 | Interactive plot with ggplot2 and ggiraph [1] | cardiomoon | 2016.05.25 |
13 | ggBidirectionalBar.R | cardiomoon | 2016.05.22 |
12 | 인구피라미드 : Bidirectional Barplot | cardiomoon | 2016.05.22 |
11 | Radar Chart | cardiomoon | 2016.05.20 |
10 | ggRadar.R | cardiomoon | 2016.05.20 |
» | Rose plot with ggplot2 [1] | cardiomoon | 2016.05.10 |
8 | Pie plot과 Donut plot의 결합 [2] | cardiomoon | 2016.05.08 |
7 | 책에 있는 R code 만 추출한 R 파일입니다. [1] | cardiomoon | 2016.05.03 |
6 | 교재 예제자료 [2] | 통계마술사 | 2016.01.18 |
자료파일입니다.
Untitled.csv