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 |
---|---|---|---|
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 |
5 | Error in chisq.test(mytable) [2] | se2cheeese | 2015.10.16 |
4 | 웹에서 하는 ggplot2 강의록 [2] | cardiomoon | 2015.10.15 |
3 | 책 154페이지 관련 내용입니다. [2] | 김브링이 | 2015.10.13 |
2 | 책 148 페이지 관련 질문입니다. [4] | 김브링이 | 2015.08.27 |
1 | 2015년 대한민국학술원 우수학술도서에 선정 [8] | cardiomoon | 2015.05.15 |
자료파일입니다.
Untitled.csv