2014-02-08 7 views
0

저는 6 인의 성능을위한 데이터 세트를 가지고 있습니다. "최소"및 "대상"성능을 표시하려고합니다.이 예제에서는 각각 100 및 140입니다.누적 막대 플롯에 축 눈금 레이블 추가

require("ggplot2") 
stones<-c("Mick","Keith","Brian","Bill","Charlie","Ronnie") 
rMat<-data.frame(c(rep(100,6),rep(40,6),20,21,27,46,138,168), 
     c(rep(1:6,3)),c(rep(stones,3))) 
colnames(rMat)<-c("X1","X2","X3") 
colors <- c("white","#F2F2F2","#E5E5FF", "white","#F2F2F2","#CCCCFF", "white","#F2F2F2","#B2B2FF","white","#F2F2F2", "#9999FF", "white","#F2F2F2","#7F7FFF","white","#F2F2F2","#6666FF") 
gp<-ggplot(NULL,aes(X2,X1),label=rROC[,1])+theme_bw() 
gp<-gp+geom_bar(data=rMat,stat="identity",fill=colors,colour="gray") 
gp<-gp+coord_flip() 
gp<-gp+ylab("Performance")+xlab("") 
gp<-gp+scale_x_discrete(labels=rMat[,3]) 
gp 

내가 다음 인당 (최소 최대, 최소 대상에 0 세 행에 데이터를 분할하고, 한 나머지.

명 이상의 y 축 틱 라벨이있다 및 . 결과적으로, 이름 (예를 들어, 로니 믹를, 가장 높은 성능을 제공하지 않음) 일치하지 않습니다

을 나는 이전과 같이 (작업 레이블) 사람 당 하나 개의 행을했다 :

perf<-c(160,161,167,186,278,308) 
stones<-c("Mick","Keith","Brian","Bill","Charlie","Ronnie") 
rMat<-data.frame(perf,c(1:6),stones) 

그러나 나는 상단의 예에서와 같이 막대를 분리 할 수 ​​없었습니다. 누구든지 라벨 및 분할 막대 작동 방법을 제안 할 수 있습니까?

감사합니다.

답변

0

이와 비슷한 기능이 있습니까?

pmin <- 40 
pmax <- 100 
stones<-c("Mick","Keith","Brian","Bill","Charlie","Ronnie") 
p <- c(20,21,27,46,138,168) 
gg <- data.frame(stones,p) 
gg$stones <- factor(gg$stones, level=unique(gg$stones)) 
gg$status <- ifelse(gg$p<pmin,-1,ifelse(gg$p<=pmax,0,1)) 
ggp <- ggplot(gg) 
ggp <- ggp + geom_bar(aes(x=stones, y=p, fill=factor(status)),stat="identity") 
ggp <- ggp + geom_hline(yintercept=pmin, linetype=2, colour="red") 
ggp <- ggp + geom_hline(yintercept=pmax, linetype=2, colour="blue") 
ggp <- ggp + scale_fill_discrete("Status", labels=c("Below Min","Within Range","Above Max")) 
ggp <- ggp + labs(x="",y="Performance") 
ggp <- ggp + theme_bw() 
ggp <- ggp + coord_flip() 
ggp