簡體   English   中英

如何使用繪圖R突出顯示圖形中特定聚類的中心(K-均值聚類)?

[英]How to highlight the centers of particular clusters(K-means Clustering) in graph using plotly R?

我有一個名為(inputdata_transaction_cluster)的數據框,看起來像:

數據框

我使用繪圖R對聚類分析成功地繪制了此數據框的圖形(K表示聚類)。 我的代碼如下:

nClust <- 3
kmeans_output <- kmeans(inputdata_transaction_cluster, centers = nClust)
inputdata_transaction_cluster$cluster = kmeans_output$cluster


cols <- brewer.pal(nClust, "Set1")
for(i in 1:nClust){
  inputdata_transaction_cluster$color[inputdata_transaction_cluster$cluster == i] <- cols[i]
}



plot_ly(inputdata_transaction_cluster, x =~timeStamp, y =~elapsed,type="scatter", mode = "markers", showlegend = FALSE,
        hoverinfo = "x+y+text", text =~paste("Cluster:", cluster),
        marker = list(opacity = 0.6, 
                      color =~color,
                      size = 15, 
                      line = list(color = "#262626", width = 3)))%>%
  layout(                        
    title = "CLUSTER",
    xaxis = list(       
      title = ""),     
    yaxis = list(        
      title = "RESPONSE TIME")  
  )%>%
  layout(xaxis=ax,yaxis = ay) %>%
  layout(hovermode = "closest", 
         showlegend = F, 
         title = paste("CLUSTER DIAGRAM :",unique(inputdata_transaction1$label)), 
         titlefont = list(color = "rgb(30,144,255)", size = 18))

我獲得了一個如下圖: 繪圖

但是正如您所看到的,該圖並沒有突出顯示每個特定聚類的中心。

當我運行kmeans_output $ centers時 ,我得到每個群集的值,但是如何在圖中顯示它。 預先感謝您的任何幫助。

我在下面制作了您的問題的模型。 您可以使用點或注釋(或兩者)突出顯示中心。 由於您的數據不可用,因此我使用了模擬數據。

library("plotly")
library("RColorBrewer")
nClust <- 3
inputdata_transaction_cluster <- as.data.frame(matrix(rnorm(100), ncol=4))
colnames(inputdata_transaction_cluster) <- c("timeStamp", "elapsed", "color", 
  "label")
kmeans_output <- kmeans(inputdata_transaction_cluster, centers = nClust)
inputdata_transaction_cluster$cluster = kmeans_output$cluster


cols <- brewer.pal(nClust, "Set1")
for(i in 1:nClust){
  inputdata_transaction_cluster$color[inputdata_transaction_cluster$cluster == i] <- cols[i]
}



plot_ly(inputdata_transaction_cluster, 
  x =~timeStamp, 
  y =~elapsed,
  type="scatter", mode = "markers", showlegend = FALSE,
        hoverinfo = "x+y+text", text =~paste("Cluster:", cluster),
        marker = list(opacity = 0.6, 
                      color =~color,
                      size = 15, 
                      line = list(color = "#262626", width = 3)))%>%
  layout(                        
    title = "CLUSTER",
    xaxis = list(       
      title = ""),     
    yaxis = list(        
      title = "RESPONSE TIME")  
  )%>%
  layout(hovermode = "closest", 
         showlegend = F, 
         title = paste("CLUSTER DIAGRAM :",
          unique(inputdata_transaction_cluster$label)), 
         titlefont = list(color = "rgb(30,144,255)", size = 18)) %>%
## Relevant part:
  add_markers(data=as.data.frame(kmeans_output$centers),
    x=~timeStamp, 
    y=~elapsed,
    inherit = FALSE,
    color = c("red", "green", "blue"),
    size = 15) %>%
  add_annotations(data=as.data.frame(kmeans_output$centers),
    x=~timeStamp, y=~elapsed, color = c("red", "green", "blue"), 
    text = paste("Cluster: ", rownames(kmeans_output$centers)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM