添加点对对图?

时间:2013-12-11 13:58:29

标签: r plot coordinates

我有什么方法可以为pairs情节添加点数吗?

例如,我可以使用pairs(iris[1:4])绘制Iris数据集,但我想在此数据集上执行聚类方法(例如,kmeans)并在绘图上绘制其生成的质心我已经了。

如果有一种方法可以在单个pairs图中将整个数据和质心一起绘制,以便可以以不同的方式绘制质心,这也会有所帮助。我的想法是,我绘制pairs(rbind(iris[1:4],centers)(其中心是三个质心的数据)但是以不同的方式绘制该矩阵的最后三个元素,比如改变cex或pch。有可能吗?

2 个答案:

答案 0 :(得分:4)

您可以在问题的最后一段自己提供解决方案。是的,您可以在pch功能中使用colpairs

pairs(rbind(iris[1:4], kmeans(iris[1:4],3)$centers), 
      pch=rep(c(1,2), c(nrow(iris), 3)), 
      col=rep(c(1,2), c(nrow(iris), 3)))

答案 1 :(得分:4)

另一个选择是使用panel功能:

cl <- kmeans(iris[1:4],3)
idx <- subset(expand.grid(x=1:4,y=1:4),x!=y)
i <- 1
pairs(iris[1:4],bg=cl$cluster,pch=21,
            panel=function(x, y,bg, ...) {
                points(x, y, pch=21,bg=bg)
                points(cl$center[,idx[i,'x']],cl$center[,idx[i,'y']],
                             cex=4,pch=10,col='blue')
                i <<- i +1
            })

enter image description here

但我认为使用lattice splom功能更安全,更容易。图例也会自动生成。

cl&lt; - kmeans(iris [1:4],3)

library(lattice)
splom(iris[1:4],groups=cl$cluster,pch=21,
            panel=function(x, y,i,j,groups, ...) {
                panel.points(x, y, pch=21,col=groups)
                panel.points(cl$center[,j],cl$center[,i],
                             pch=10,col='blue')
            },auto.key=TRUE)

enter image description here