2012-07-16 21 views
5

मैं ggplot2 का उपयोग करके 6 डेटा चर के जोड़े जोड़े को बनाने की कोशिश कर रहा हूं और के-साधन क्लस्टर के अनुसार बिंदुओं को रंग देता हूं। मैंने अत्यधिक प्रभावशाली 'जीजीली' पैकेज के दस्तावेज के साथ-साथ एडम लाइकानो [http://adamlaiacano.tumblr.com/post/13501402316/colored-plotmatrix-in-ggplot2] द्वारा अनौपचारिक सुधार के दस्तावेज को पढ़ा। दुर्भाग्यवश, मुझे वांछित आउटपुट प्राप्त करने का कोई तरीका नहीं मिला।केजी मतलब क्लस्टर द्वारा ggplot का प्लॉटमैट्रिक्स रंग?

यहां एक नमूना कोड है: -

#The Swiss fertility dataset has been used here 

data_ <- read.csv("/home/tejaskale/Ubuntu\ One/IUCAA/Datasets/swiss.csv", header=TRUE) 
data_ <- na.omit(data_) 

u <- c(2, 3, 4, 5, 6, 7) 
x <- data_[,u] 
k <- 3 
maxIterations <- 100 
noOfStarts <- 100 
filename <- 'swiss.csv' 

library(ggplot2) 
library(gridExtra) 
library(GGally) 

kmeansOutput <- kmeans(x, k, maxIterations, noOfStarts) 

xNew <- cbind(x[,1:6], as.factor(kmeansOutput$cluster)) 
names(xNew)[7] <- 'cluster' 
kmeansPlot <- ggpairs(xNew[,1:6], color=xNew$cluster) 

OR 

kmeansPlot <- plotmatrix(xNew[,1:6], mapping=aes(colour=xNew$cluster)) 

दोनों भूखंडों बनाई गई हैं, लेकिन समूहों के अनुसार रंग का नहीं हैं।

आशा है कि मैंने मंच पर इस प्रश्न का उत्तर नहीं छोड़ा है और अगर वास्तव में यह मामला है तो माफ़ी मांगें। किसी भी मदद को बहुत सराहा जाएगा।

धन्यवाद!

+1

आप सामान्य प्लॉट कमांड के साथ-साथ 'col' पैरामीटर में क्लस्टर आईडी को पास करके भी कर सकते हैं। –

+0

उत्तर के लिए धन्यवाद, @ थॉमसजंगब्लूट। लेकिन मुझे यकीन नहीं है कि मैं इसे पूरी तरह से समझता हूं। क्या आप पहलुओं के उपयोग की सलाह दे रहे हैं? मैंने http://stackoverflow.com/questions/1313954/plotting-two-vectors-of-data-on-a-ggplot2-scatter-plot-using-r पर दिए गए उदाहरणों का उपयोग करके facet_grid के साथ खेलने का प्रयास किया। हालांकि वे मेरे उद्देश्य की सेवा नहीं कर रहे हैं। आपके सुझाव को बेहतर ढंग से समझने के लिए मेरे लिए एक न्यूनतम उदाहरण बहुत मददगार होगा। एक बार फिर से धन्यवाद! –

+0

यह क्लस्टर द्वारा रंगीन आपके अंक की एक सामान्य स्कैटर साजिश है। सामान्य केमैन दस्तावेज़ यहां देखें: http://stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html नीचे नीचे: 'साजिश (x, col = cl $ cluster) 'जहां क्लस्टर के लिए' cl $ क्लस्टर 'असाइनमेंट है। –

उत्तर

4

plotmatrix2 के निम्नलिखित मामूली संशोधन मेरे लिए ठीक काम करता है:

plotmatrix2 <- function (data, mapping = aes()) 
{ 
    grid <- expand.grid(x = 1:ncol(data), y = 1:ncol(data)) 
    grid <- subset(grid, x != y) 
    all <- do.call("rbind", lapply(1:nrow(grid), function(i) { 
     xcol <- grid[i, "x"] 
     ycol <- grid[i, "y"] 
     data.frame(xvar = names(data)[ycol], yvar = names(data)[xcol], 
      x = data[, xcol], y = data[, ycol], data) 
    })) 
    all$xvar <- factor(all$xvar, levels = names(data)) 
    all$yvar <- factor(all$yvar, levels = names(data)) 
    densities <- do.call("rbind", lapply(1:ncol(data), function(i) { 
     data.frame(xvar = names(data)[i], yvar = names(data)[i], 
      x = data[, i]) 
    })) 
    densities$xvar <- factor(densities$xvar, levels = names(data)) 
    densities$yvar <- factor(densities$yvar, levels = names(data)) 
    mapping <- defaults(mapping, aes_string(x = "x", y = "y")) 
    class(mapping) <- "uneval" 
    ggplot(all) + facet_grid(xvar ~ yvar, scales = "free") + 
     geom_point(mapping, na.rm = TRUE) + stat_density(aes(x = x, 
     y = ..scaled.. * diff(range(x)) + min(x)), data = densities, 
     position = "identity", colour = "grey20", geom = "line") 
} 


plotmatrix2(mtcars[,1:3],aes(colour = factor(cyl))) 

enter image description here

यह एक ggplot2 संस्करण मुद्दा हो सकता है, लेकिन मैं densities डेटा फ्रेम में faceting चर के लिए मजबूर करने के लिए किया था कारक होने के लिए (जो मुझे GGally संस्करण में भी टूटा हुआ लगता है)। इसके अलावा, आमतौर पर aes() पर वैक्टर पास नहीं करते हैं, लेकिन केवल कॉलम नाम।

+1

यह मेरे लिए काम करता है हालांकि अभी भी 'डिफ़ॉल्ट' से कोड के कामकाज को समझने की कोशिश कर रहा है। भी, 'एईएस()' के संबंध में टिप के लिए धन्यवाद। –

+0

सबसे हालिया ggplot2 संस्करण (iirc 0.9.3.1) के साथ, यह 'फ़ंक्शन "डिफ़ॉल्ट नहीं ढूंढ सका। – bluenote10