![](/img/trans.png)
[英]How to edit own k-means function so that it takes clusters as input instead of centers in R?
[英]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.