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 |
---|---|---|---|
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 |
» | 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 |