gpt4 book ai didi

r - 源自同一个 hclust 对象的图之间的颜色变化,需要统一用户体验

转载 作者:行者123 更新时间:2023-12-05 03:58:26 26 4
gpt4 key购买 nike

我正在尝试创建聚类评估工具。通过 3 情节。但颜色不一致。所以一个集群在一个图中可能是蓝色的,但在另一个图中是黄色的。用户不友好。

下面的函数可以提供任何 Hclust 对象,它将生成 3 个图。树状图、聚类图和轮廓图。颜色与最后两个一致,但树状图的颜色不同。我认为这是这个情节的等级性质。因此, split 的拳头获得第一种颜色。但我不确定。因为它们都具有具有相同簇标签(1、2 等)的相同对象。这种颜色错误真的困扰着我,我想解决它。如果您知道为什么会发生这种情况或有解决方案,我会洗耳恭听。使用的库是 factoextra

这也是我的第一篇文章。因此,如果有任何不清楚的地方或任何请告诉我。

library(factoextra)

# clustermodel = hclust object
# tot_clusters = the number of clusters (same as used as argument in hclust function)
# plots is an temp env to save the plots (function only returns one item so this is a work around)
# the plots wil later be plotted by calling { plot(plots$dend) } *example*
Cluster_visualisation <- function(cluster_model, tot_clusters, plots) {

plots$dend <- fviz_dend(cluster_model, ggtheme = theme_minimal(),
show_labels = FALSE, main = paste("Dendrogram", tot_clusters, "clusters" ))

plots$sil <- fviz_silhouette(cluster_model, print.summary = F, main= paste("silhouette plot of", tot_clusters, "clusters"), ggtheme = theme_minimal())

plots$clust <-fviz_cluster(cluster_model, ellipse.type = "convex", ggtheme = theme_minimal(),
labelsize = 0, main= paste("Cluster plot of", tot_clusters ,"clusters"))

最佳答案

这是一个匹配由 fviz_dend 创建的树状图的分​​支颜色的解决方案。本质上,您需要从 ggplot 对象中提取树状图顺序,然后使用它来确定 fviz_silhouettefviz_clust 或您可能想要执行的任何其他绘图的级别.

library(factoextra)
library(RColorBrewer)
library(cluster)
library(cowplot)

## generate data
iris <- datasets::iris

## perform hierarchical clustering
d_iris <- dist(iris)
hc_iris <- hclust(d_iris, method = "complete")

## cut tree to three clusters
k = 3
clust_iris <- cutree(hc_iris,k=k)

## pick colour
cols = brewer.pal(n=k, "Set2")

## plot dendrogram
plot_dend =
fviz_dend(hc_iris, k_colors = cols, k=k) + theme_cowplot()

## create silhouette data
sil_data = as.numeric(clust_iris)
names(sil_data) = rownames(iris)
sil_iris = silhouette(sil_data, d_iris)

## extract dendrogram from ggplot object and create named colour vector
dend = attributes(plot_dend)$dendrogram
tree_order <- order.dendrogram(dend)
clust_iris = factor(clust_iris, levels = unique(clust_iris[tree_order]))
names(cols) = unique(clust_iris[tree_order])

## plot silhouettes
plot_silhouette =
fviz_silhouette(sil_iris, print.summary = F) +
scale_colour_manual(values = cols) +
scale_fill_manual(values = cols) +
theme_cowplot()

## plot clusters
plot_cluster =
fviz_cluster(list(data = d_iris, cluster = clust_iris)) +
scale_colour_manual(values = cols) +
scale_fill_manual(values = cols) +
theme_cowplot()

## show as grid
plot_grid(plot_dend, plot_silhouette, plot_cluster, ncol=3)

enter image description here

关于r - 源自同一个 hclust 对象的图之间的颜色变化,需要统一用户体验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58014010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com