1

想象一下,我有这个数据集 data1(后缩放和 PCA)。

            F1    F2     F3  F4   F5 ... F21
1          0.28  2.29  5.64 1.04 3.92    1065
2          0.26  1.28  4.38 1.05 3.40    1050
3          0.30  2.81  5.68 1.03 3.17    1185
4          0.24  2.18  7.80 0.86 3.45    1480
5          0.39  1.82  4.32 1.04 2.93     735
.
.
.
1000       0.34  1.97  6.75 1.05 2.85    1450

我使用以下方法对数据集进行了 k-means 聚类分析:

Clusters <- kmeans(data1, 5, nstart = 25)
data1 <- data.frame(data1)
data1 <- data1 %>% mutate(Cluster = Clusters$cluster)

然后我从另一个数据集中插入了字符类型的行名:

rownames(data1) <- data2$Name

然后,为了避免标签重叠,我使用了

p1 <- autoplot(Clusters, data = data1, frame = TRUE, label = F, x=1, y=2)
p2 <- p1 + geom_text_repel(aes(label = rownames(data1)))

哪个返回了这个

由于我有超过 500 个数据点,因此标签可以预见地重叠并且无法读取。我想知道当标签仅在您单击或悬停在数据点上时显示时是否有一种标签方法。或者欢迎任何其他解决方案。谢谢

4

1 回答 1

0

你可以用plotly. add_trace()您只能在悬停时显示标签。

library(ggplot2)
library(plotly)
library(dplyr)

data <- mtcars[, c("mpg", "wt")] # just two features

k_data <- kmeans(data, 3) # find clusters

现在让我们将集群信息添加到data

data <- cbind(data, cluster=k_data$cluster)
#                mpg    wt cluster
# Mazda RX4     21.0 2.620       1
# Mazda RX4 Wag 21.0 2.875       1
# Datsun 710    22.8 2.320       1

现在我们可以绘制所有内容:

plot_ly(data = data, x = ~mpg, y = ~wt, color = ~as.factor(cluster)) %>% 
  add_trace(
    type = 'scatter',
    mode = 'markers',
    text = rownames(data), # when you hover on a point it will show it's rowname
    hoverinfo = 'text',
    showlegend = F
  )

在此处输入图像描述

更多指南在这里这里

于 2019-05-28T14:55:39.360 回答