【发布时间】:2019-12-10 20:11:21
【问题描述】:
我想根据这些数据创建一个覆盖有凸簇和组 (V1) 颜色的图;
str(stackoverflow)
Classes ‘data.table’ and 'data.frame': 174 obs. of 4 variables:
$ ID : Factor w/ 277 levels "1001","1021",..: 1 2 4 5 6 7 8 9 10 11 ...
$ UMAP1: num -1.1313 -0.8176 0.1355 -0.0957 0.0724 ...
$ UMAP2: num 0.219 0.48 -1.378 -0.95 -1.229 ...
$ V1 : Factor w/ 3 levels "0","1","2": 3 1 1 1 1 1 1 1 1 1 ...
我按如下方式计算了一个 K-means 聚类;
km<-eclust(lipid.b.kmeans[,2:3],"kmeans", k=5, nboot = 2)
得到的公里数是 ;
km
K-means clustering with 5 clusters of sizes 38, 15, 18, 42, 61
Cluster means:
UMAP1 UMAP2
1 -5.3988979 -1.585529
2 -0.4963504 0.470514
3 4.9895693 3.208727
4 1.6177653 1.461844
5 0.8990981 -1.081347
Clustering vector:
[1] 2 2 5 5 5 5 5 5 5 5 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 3 1 1 1 4 1 4 1 1 4 1 1 1 1 4 3 4 4 4 4 4 4 4 4 3 4 4 3 4 4 4
[72] 4 3 4 4 4 4 4 3 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 4 3 3 4 3 3 3 3 5 3 2 4 3 3 2 2 2 4 2 5 5 5 2 5 5 5 2 5 5 5 2 5 5 5 5 5 5 5 5 5 2 5 5 5
[143] 5 5 5 5 5 5 5 5 5 5 5 5 5 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 5
Within cluster sum of squares by cluster:
[1] 13.897357 2.224761 2.208410 16.884947 59.421921
(between_SS / total_SS = 95.8 %)
然后我生成了一个凸日期;
k<-fviz_cluster(km, data = stackoverflow[, 2:3], repel = T, ellipse.type = "convex")
d<-k$data
convex.data<-d %>% group_by(cluster) %>% slice(chull(x,y))
这是;
str(convex.data)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 46 obs. of 4 variables:
$ name : Factor w/ 174 levels "1","10","100",..: 46 118 101 116 108 119 123 30 1 99 ...
$ x : num -1.54 -1.87 -1.89 -1.7 -1.67 ...
$ y : num -1.36 -1.362 -1.089 -0.592 -0.56 ...
$ cluster: Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 1 2 2 2 ...
- attr(*, "groups")=Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 5 obs. of 2 variables:
..$ cluster: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5
..$ .rows :List of 5
.. ..$ : int 1 2 3 4 5 6 7
.. ..$ : int 8 9 10 11 12 13 14
.. ..$ : int 15 16 17 18 19 20 21
.. ..$ : int 22 23 24 25 26 27 28 29 30 31
.. ..$ : int 32 33 34 35 36 37 38 39 40 41 ...
..- attr(*, ".drop")= logi TRUE
当我通过使用 ggplot2 绘制这些时;
ggplot(convex.data, aes(x,y))+geom_point(data=stackoverflow, aes(x=UMAP1, y=UMAP2, color= V1))+geom_polygon(data=convex.data, alpha=0.5, aes(fill=cluster,linetype=cluster))
多边形凸簇图像的 X 和 y 比例比图像小 geom_point。我使用expand_limits 来纠正比例差异,但根本没有用。
在这一点上,我非常感谢任何解决此问题的建议或指示。
【问题讨论】:
-
没有任何示例数据或用于生成此问题的完整代码,很难提供答案。例如
convex.data<-d %>% group_by(cluster) %>% slice(chull(x,y))中的数据框"d"来自哪里? -
在生成“d”之前还有两个额外的代码,我忘记添加了。 k