Вы имели в виду что-то подобное?
Извините, но я ничего не знаю о HTML5 Canvas, только R ... Но я надеюсь, что это поможет ...
Сначала я кластеризирую данные с использованием kmeans (обратите внимание, что я не кластеризовал матрицу расстояний), затем вычисляю matix расстояния и строю его с использованием cmdscale. Затем я добавляю цвета к MDS-графику, которые соответствуют группам, идентифицированным kmeans. Плюс несколько приятных дополнительных графических функций.
Вы можете получить доступ к координатам из объекта, созданного cmdscale.
### some sample data
require(vegan)
data(dune)
# kmeans
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000)
# distance matrix
dune_dist <- dist(dune)
# Multidimensional scaling
cmd <- cmdscale(dune_dist)
# plot MDS, with colors by groups from kmeans
groups <- levels(factor(kclus$cluster))
ordiplot(cmd, type = "n")
cols <- c("steelblue", "darkred", "darkgreen", "pink")
for(i in seq_along(groups)){
points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16)
}
# add spider and hull
ordispider(cmd, factor(kclus$cluster), label = TRUE)
ordihull(cmd, factor(kclus$cluster), lty = "dotted")
![enter image description here](https://i.stack.imgur.com/2G1DV.jpg)