2013-01-19 17 views
12

के साथ कई geom_point समूहों के चारों ओर की रूपरेखा मैं currrently कोड इस आकर्षित करने के लिए नीचे दिए गए शामिल किया है: enter image description hereआहरण 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

आप नीचे और अपने आकार के सबसे ऊपर का क्रम बदलते हैं क्रमशः आरोही और उतरते, तो आप सिर्फ अपने मूल data.frame पर geom_polygon उपयोग करें और सभी उत्तल पतवार सामान छोड़ सकते हैं:

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

अरघ, मुझे इसे हराया ... अच्छा एक – SlowLearner

+1

और अर्ध पारदर्शी भर 'geom_polygon (एईएस (fill = समूह, अल्फा = 0.3) पढ़ने के लिए @ नोएल कोड की अंतिम पंक्ति को ट्वीव करके प्राप्त किया जा सकता है) ' – SlowLearner

+0

एचटी @धीमा सिखने वाला। इसे उत्तर में जोड़ा गया। – Noah