R p的子集,在一个

时间:2016-02-29 08:34:20

标签: r cluster-computing pam

我正在努力解决以下问题: 我使用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包的

但它给出了同样的错误。 是否有其他选项可以在一个图中排列带有标签的多个数字?

0 个答案:

没有答案