2013-01-19 24 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