r - 如何更改集群中每个组的树状图颜色

标签 r cluster-analysis distance hclust dendextend

这是我的数据

df<- structure(list(name = structure(c(2L, 12L, 1L, 16L, 14L, 10L, 
9L, 5L, 15L, 4L, 8L, 13L, 7L, 6L, 3L, 11L), .Label = c("All", 
"Bab", "boro", "bra", "charli", "delta", "few", "hora", "Howe", 
"ist", "kind", "Kiss", "myr", "No", "TT", "where"), class = "factor"), 
    value = c(1.251, -1.018, -1.074, -1.137, 1.018, 1.293, 1.022, 
    -1.008, 1.022, 1.252, -1.005, 1.694, -1.068, 1.396, 1.646, 
    1.016)), .Names = c("name", "value"), class = "data.frame", row.names = c(NA, 
-16L))

这是我做的

d <- dist(as.matrix(df$value),method = "euclidean")
#compute cluster membership
hcn <- hclust(d,method = "ward.D2")
plot(hcn)

它给了我我想要的如下 enter image description here

这里所有的组都用黑色显示,树状图不是很清楚我想要的是改变每个组的颜色并使用垂直名称而不是数字最后我希望能够删除 hclust (."ward.D2") 同时根据需要更改 x 标签和 y 标签

最佳答案

您可以使用 dendextend 包,针对这样的任务:

# install the package:

if (!require('dendextend')) install.packages('dendextend');库('dendextend')

## Example:
dend <- as.dendrogram(hclust(dist(USArrests), "ave"))
d1=color_branches(dend,k=5, col = c(3,1,1,4,1))
plot(d1) # selective coloring of branches :)
d2=color_branches(d1,k=5) # auto-coloring 5 clusters of branches.
plot(d2)
# More examples are in ?color_branches

enter image description here

您可以在以下 URL 的“用法”部分中的演示文稿和软件包插图中看到许多示例:https://github.com/talgalili/dendextend

或者你也可以使用:

你应该使用 dendrapply。

例如:

# Generate data
set.seed(12345)
desc.1 <- c(rnorm(10, 0, 1), rnorm(20, 10, 4))
desc.2 <- c(rnorm(5, 20, .5), rnorm(5, 5, 1.5), rnorm(20, 10, 2))
desc.3 <- c(rnorm(10, 3, .1), rnorm(15, 6, .2), rnorm(5, 5, .3))

data <- cbind(desc.1, desc.2, desc.3)

# Create dendrogram
d <- dist(data) 
hc <- as.dendrogram(hclust(d))

# Function to color branches
colbranches <- function(n, col)
  {
  a <- attributes(n) # Find the attributes of current node
  # Color edges with requested color
  attr(n, "edgePar") <- c(a$edgePar, list(col=col, lwd=2))
  n # Don't forget to return the node!
  }

# Color the first sub-branch of the first branch in red,
# the second sub-branch in orange and the second branch in blue
hc[[1]][[1]] = dendrapply(hc[[1]][[1]], colbranches, "red")
hc[[1]][[2]] = dendrapply(hc[[1]][[2]], colbranches, "orange")
hc[[2]] = dendrapply(hc[[2]], colbranches, "blue")

# Plot
plot(hc)

我从以下位置获得此信息:How to create a dendrogram with colored branches?

关于r - 如何更改集群中每个组的树状图颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891392/

相关文章:

r - 将字符拆分为数据框中的两个变量

machine-learning - 使用 mcl 可以使用哪些参数?

machine-learning - 使用 WEKA 选择 Xmeans 中的最小和最大簇数

python - 在二维空间中计算欧氏距离的最快方法

mysql - 确定 n 维中点之间的距离

r - 使用 col1 或 col2 连接两个数据帧,然后添加结果

R - 了解 regexpr 的输出

r - 计算与 R 数据框中特定因素相关的值

machine-learning - ELKI中DBSCAN MinPts参数的含义

cluster-analysis - 混合变量(分类和数字)距离函数