繁体   English   中英

使用 plot function 和 as.dendrogram object 的边距问题

[英]Problem with margins using plot function with as.dendrogram object

我正在尝试使用基本 R 函数和 package“dendextend”来自定义集群 plot。 首先,我使用公共 hclust() function 生成一个集群。然后我使用“dendextend”为 k=groups 定义的分支着色。 然后我使用 plot()、points() 和 text() 进行最终自定义。 要使用“deextend”的 function set() 为分支着色,集群的 class 应从“hclust”更改为“as.dendrogram”。 当我将 plot() 与 as.dendrogram 一起使用时,图中的 plot 区域似乎缩小了,主要在 x 轴下方。 我试图改变很多 par() arguments 但它不起作用。 尽管 package "dendextend" 提供了很多自定义,但它不允许旋转集群对象的标签。 下面是一些代码和图形。 我的母语不是英语,所以请忽略语法错误。

我在“Doubs.RData”中使用数据集“env”,可以在下面的链接中下载: enter link description here

env_scaled <- apply(env, 2, scale)

dist_env <- dist(env_scaled)

cluster_env <- hclust(dist_env, method = "ward.D2")

cluster <- as.dendrogram(cluster_env) %>% 
  set("branches_k_color", color1, k=3) %>% 
  set("labels", "") %>% 
  set("hang", -0.1) %>% 
  set("branches_lwd", 1.5

color_cluster <- c(rep("blue4", 4), rep("forestgreen", 17), rep("firebrick", 9))

plot(cluster, ylab="Euclidean distance", xlab="", sub="", main= "Cluster (Ward)")
points(seq(1:30), rep(0, 30), col=alpha(color_cluster, 0.8), 
       pch=c(rep(19, 4), rep(15,17), rep(17, 9)), cex=1.5)
text(seq(1:30), rep(-0.5,30), labels=cluster_env$order, cex=0.8, 
     col=color_cluster, font=2)

定制集群

data(USArrest)可用于重现上述示例。

dend <- USArrests %>%
  dist() %>%
  hclust(method = "ave") %>%
  as.dendrogram() %>% 
  set("labels", "")
d2 <- color_branches(dend, 5)
plot(d2)
text(seq(1:nrow(USArrests)), rep(-5, nrow(USArrests)), labels= 1:nrow(USArrests), cex=0.8, font=2)

请注意,当我们使用text() function 将标签设置为 -5.0(y 轴)时,它不会完全显示。

您需要在par中使用mar参数。

例如:

library(dendextend)
# ?color_branches
par(mar=c(5 + 5,4,4,2) + 0.1)

dend <- USArrests %>%
  dist() %>%
  hclust(method = "ave") %>%
  as.dendrogram()
d2 <- color_branches(dend, 5)
plot(d2)

在此处输入图像描述

将 +5 添加到 mar 的第一个参数会使 plot 的底部有更多空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM