require(reshape2)
require(plyr)
require(ggplot2)
require(scales)
coord_radar <- function (theta = "x", start = 0, direction = 1)
{
theta <- match.arg(theta, c("x", "y"))
r <- if (theta == "x")
"y"
else "x"
ggproto("CoordRadar", CoordPolar, theta = theta, r = r, start = start,
direction = sign(direction),
is_linear = function(coord) TRUE)
}
rescale_df=function(data,groupvar=NULL){
if(is.null(groupvar)) df=data
else df=data[,-which(names(data) %in% groupvar)]
select=sapply(df,is.numeric)
df[select]=lapply(df[select], scales::rescale)
if(!is.null(groupvar)) {
df=cbind(df,data[[groupvar]])
colnames(df)[length(df)]=groupvar
}
df
}
ggRadar=function(data=iris,
xvars=NULL,
yvar=NULL,autorescale=FALSE,
groupvar=NULL,legend.position="bottom",
radar=TRUE,polar=FALSE,
mean=TRUE,nrow=FALSE,
colour="red"){
if(is.null(xvars)) {
select=sapply(data,is.numeric)
xvars=colnames(data)[select]
}
if(is.null(yvar)){
# if(!is.null(groupvar)) {
# for(i in 1:length(groupvar)) data[[groupvar[i]]]=factor(data[[groupvar[i]]])
# }
# data
if(autorescale) data=rescale_df(data,groupvar)
longdf=melt(data,id.vars=groupvar,measure.vars=xvars)
longdf
if(mean)
df=ddply(longdf,c(groupvar,"variable"),summarize,mean(value,na.rm=TRUE))
if(nrow)
df=ddply(longdf,c(groupvar,"variable"),"nrow")
colnames(df)[length(df)]="value"
#print(df)
} else{
longdf=data
}
if(is.null(groupvar)){
p<-ggplot(data=df,aes_string(x="variable",y="value",group=1))+
geom_point(size=3,colour=colour)+
geom_polygon(colour=colour,fill=colour,alpha=0.4)
} else {
df=df[!(df$variable %in% groupvar),]
for(i in 1:length(groupvar)) df[[groupvar[i]]]=factor(df[[groupvar[i]]])
p<-ggplot(data=df,aes_string(x="variable",y="value",
colour=groupvar,fill=groupvar,group=groupvar))+
geom_point(size=3)+
geom_polygon(alpha=0.4)
}
p<- p+ xlab("")+ylab("")+theme(legend.position=legend.position)
if(radar==TRUE) p<-p+coord_radar()
if(polar==TRUE) p<-p+coord_polar()
p
}
Comment 0
- 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 |
» | ggRadar.R | cardiomoon | 2016.05.20 |
9 | 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 |