我有什么方法可以为pairs
情节添加点数吗?
例如,我可以使用pairs(iris[1:4])
绘制Iris数据集,但我想在此数据集上执行聚类方法(例如,kmeans
)并在绘图上绘制其生成的质心我已经了。
如果有一种方法可以在单个pairs
图中将整个数据和质心一起绘制,以便可以以不同的方式绘制质心,这也会有所帮助。我的想法是,我绘制pairs(rbind(iris[1:4],centers)
(其中心是三个质心的数据)但是以不同的方式绘制该矩阵的最后三个元素,比如改变cex或pch。有可能吗?
答案 0 :(得分:4)
您可以在问题的最后一段自己提供解决方案。是的,您可以在pch
功能中使用col
和pairs
。
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
})
但我认为使用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)