我正在努力解决以下问题:
我使用pam
在7个群集中聚集我的数据集v
:
x <- pam(v,7)
我知道clustering
中有一个向量x
,其中包含相应的群集数。
我想获得x
的子集,其中只包含群集1.
这可能吗?
编辑:
这是一个例子。在三个群集中聚类iris
并绘制它们。
library(ggfortify)
library(cluster)
v <- iris[-5]
x <- pam(v,3)
autoplot(x, frame = TRUE, frame.type = 'norm')
问题:我如何只绘制第一个群集?它应该看起来像没有第2组和第3组的第一个图。
编辑:我想我找到了解决方案。因此我不再使用自动曝光,而是计算每个星团的凸包并绘制它。
library(cluster)
library(plyr)
library(ggplot2)
library(ggrepel)
find_hull <- function(df) df[chull(df$x, df$y),]
v<-iris[-5]
pp <- pam(v,3)
n<-princomp(pp$data, scores = TRUE, cor = ncol(pp$data) != 2)$scores
df<-data.frame(n[,1],n[,2],pp$clustering)
colnames(df)<-c("x","y","z")
hulls <- ddply(df, "z", find_hull)
p<-qplot(x,y,data=df,color=as.factor(z))+
geom_polygon(data=hulls, alpha=1, fill=NA)+
geom_text_repel(aes(label = rownames(df)),arrow = arrow(length = unit(0.00, 'inches'), angle = 0.00),size=5.5,colour="grey55")+
theme_classic(base_size = 16)+
theme(axis.line=element_blank(),axis.text.x=element_blank(),axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.title.x=element_blank(),axis.title.y=element_blank(),legend.position="none",
panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),plot.background=element_blank())
p
df2<-df[df$z==1,]
hulls <- ddply(df2, "z", find_hull)
p1<-qplot(x,y,data=df2,color=as.factor(z))+
geom_polygon(data=hulls, alpha=0.8, fill=NA)+
geom_text_repel(aes(label = rownames(df2)),arrow = arrow(length = unit(0.00, 'inches'), angle = 0.00),size=5.5,colour="grey25")+
theme_classic(base_size = 16)+
theme(axis.line=element_blank(),axis.text.x=element_blank(),axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.title.x=element_blank(),axis.title.y=element_blank(),legend.position="none",
panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),plot.background=element_blank())+
p1
现在我想在一个设备中绘制两个数字。我已经尝试了cookbook-r的多重时隙,但它给出了错误
Error: Aesthetics must be either length 1 or the same as the data (26): label, x, y
一定是因为我猜的标签。
我也试过
grid.arrange(p,p1, ncol=1)
来自gridExtra
包的但它给出了同样的错误。 是否有其他选项可以在一个图中排列带有标签的多个数字?