R 着色图';用k-均值聚类法绘制矩阵?

R 着色图';用k-均值聚类法绘制矩阵?,r,ggplot2,k-means,R,Ggplot2,K Means,我试图使用ggplot2创建一个包含6个数据变量的成对图,并根据它们所属的k均值聚类对点进行着色。我阅读了令人印象深刻的“GGally”包的文档以及Adam Laiacano的非正式修复[http://adamlaiacano.tumblr.com/post/13501402316/colored-plotmatrix-in-ggplot2]. 不幸的是,我也找不到任何方法来获得所需的输出 下面是一个示例代码:- #The Swiss fertility dataset has been use

我试图使用ggplot2创建一个包含6个数据变量的成对图,并根据它们所属的k均值聚类对点进行着色。我阅读了令人印象深刻的“GGally”包的文档以及Adam Laiacano的非正式修复[http://adamlaiacano.tumblr.com/post/13501402316/colored-plotmatrix-in-ggplot2]. 不幸的是,我也找不到任何方法来获得所需的输出

下面是一个示例代码:-

#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))
#此处使用了瑞士生育率数据集

数据\up>以下对
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)))

plotmatrix2通过在
col
参数中传递集群,您也可以使用普通的plot命令来实现这一点。谢谢您的回答,@ThomasJungblut。但我不确定我是否完全理解它。你建议使用刻面吗?我尝试使用上给出的示例使用facet_grid。不过,它们并没有达到我的目的。举个简单的例子,对我更好地理解你的建议会有很大帮助。再次感谢!这只是一个由簇着色的点的普通散点图。请参阅此处的普通kmeans文档:在底部:
plot(x,col=cl$cluster)
其中
cl$cluster
是对集群的分配。好的,明白你的意思了。但我希望使用“ggplot2”生成此绘图,我不认为我可以在这里用“qplot”替换“plot”。知道如何使用“ggplot2”实现这一点吗?这对我来说很有用,尽管我仍然试图从“默认值”开始理解代码的功能。另外,感谢您提供有关“aes()”的提示。对于最新的ggplot2版本(iirc 0.9.3.1),这将产生
无法找到函数“默认值”