2017-09-21 3 views
0

J'ai une trame de données nommée (inputdata_transaction_cluster) qui ressemble à:Comment mettre en évidence les centres de grappes particulières (K-means Clustering) dans le graphe en utilisant R?

data frame

Je comploté avec succès le graphique pour cette trame de données en utilisant plotly R pour l'analyse de cluster (K ​​signifie le regroupement). Mon code est ci-dessous:

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)) 

J'ai obtenu un graphique qui ressemble à: Rplot

Mais comme vous pouvez voir le tracé ne met pas en évidence les centres de chaque clusters.So particulier est-il un moyen je peux y parvenir dans l'intrigue en utilisant R intrigue? Quand j'exécute kmeans_output $ centres, j'obtiens les valeurs pour chaque grappe mais comment je peux montrer cela dans le graphe. Merci d'avance pour toute aide.

Répondre

0

J'ai fait une maquette de votre problème ci-dessous. Vous pouvez mettre en évidence les centres en utilisant des points ou des annotations (ou les deux). J'ai utilisé des données fictives puisque la vôtre n'est pas disponible.

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)))