2013-01-19 21 views
12

我currrently已包括下面的代码来绘制此: enter image description here图纸勾勒各地的多个geom_point组,ggplot

我所试图做的就是为每个组的轮廓遵循所有的点在每个组 - 而不是像目前那样跳过其中一些组。另外,我希望每个大纲都有一个半透明的填充。谢谢你的帮助。

library(ggplot2) 
library(reshape) 
library(car) 

G1 <- 1:10 
G2 <- 11:20 
G3 <- 21:30 
G4 <- 31:35 
G5 <- 36:41 

sdata <- read.csv("http://dl.dropbox.com/u/58164604/sdata.csv", stringsAsFactors = FALSE) 
pdata<-melt(sdata, id.vars="Var") 

VarArea <- data.frame(unique(pdata$Var)) 
VarFinalMin <-c() 
for (g in 1:max(VarArea)) 
{ 
VarNum<-pdata[which(pdata$Var==g),1:c(ncol(pdata))] 
VarN <- g 
VarMin <- min(VarNum$value) 
VarMinN <- cbind(VarN, VarMin) 
VarFinalMin <- rbind(VarFinalMin,VarMinN) 
} 
VFinalMin <- data.frame(VarFinalMin) 
colnames(VFinalMin)<-c("Variable", "Value") 

VarFinalMax <-c() 
for (g in 1:max(VarArea)) 
{ 
VarNum<-pdata[which(pdata$Var==g),1:c(ncol(pdata))] 
VarN <- g 
VarMax <- max(VarNum$value) 
VarMaxN <- cbind(VarN, VarMax) 
VarFinalMax <- rbind(VarFinalMax,VarMaxN) 
} 
VFinalMax <- data.frame(VarFinalMax) 
colnames(VFinalMax)<-c("Variable", "Value") 

VFinal<-rbind(VFinalMin, VFinalMax) 
VFinal$Group <- recode(VFinal$Variable, "G1 = 'A'; G2 = 'B'; G3 = 'C'; G4 = 'D'; G5 = 'E'") 

ggplot(VFinal, aes(Variable, Value, colour = Group)) + geom_point() 
find_hull <- function(VFinal) VFinal[chull(VFinal$Variable, VFinal$Value), ] 
hulls <- ddply(VFinal, "Group", find_hull) 
ggplot(VFinal, aes(Variable, Value, colour = Group)) + geom_point() + geom_polygon(data = hulls, fill = NA) 
+2

屏幕截图,完全可重复的代码,包括库调用 - +1问题。 – SlowLearner

回答

11

如果你重新排序的底部和你的形状的顶部分别上升和下降,你可以用geom_polygon你原来的data.frame,并跳过所有凸包东西:

VLarge <- VFinal[which(VFinal$Value > 25000),] 
VLarge <- VLarge[order(-VLarge$Variable, VLarge$Group),] 
VSmall <- VFinal[which(VFinal$Value <= 25000),] 
VSmall <- VSmall[order(VSmall$Variable, VSmall$Group),] 
VFinal <- rbind(VSmall, VLarge) 
ggplot(VFinal, aes(Variable, Value, colour = Group)) + geom_point() + 
    geom_polygon(aes(fill = Group), alpha = 0.3) 

enter image description here

+0

Argh,打我吧...不错的一个 – SlowLearner

+1

半透明填充可以通过调整@ Noel代码的最后一行来读取'geom_polygon(aes(fill = Group,alpha = 0.3))' – SlowLearner

+0

HT @SlowLearner。将它添加到答案中。 – Noah