R:定制的树状图-不同的叶子节点颜色和标签类型

R:定制的树状图-不同的叶子节点颜色和标签类型,r,fonts,colors,dendrogram,dendextend,R,Fonts,Colors,Dendrogram,Dendextend,我使用dendextend()编写了以下MWE: 库(集群) 图书馆(GGO) 图书馆(Dendestend) d1一些反应: 1) 你不需要在这里 2) 您需要使用: set("labels_colors", ifelse(ss_change, 2, 1)) %>% set("leaves_pch", ifelse(ss_change, 15, 19)) %>% set("leaves_col", ifelse(ss_change, 2, 1)) 3)

我使用dendextend()编写了以下MWE:

库(集群)
图书馆(GGO)
图书馆(Dendestend)
d1一些反应:

1) 你不需要在这里

2) 您需要使用:

    set("labels_colors", ifelse(ss_change, 2, 1)) %>%
    set("leaves_pch", ifelse(ss_change, 15, 19)) %>%
    set("leaves_col", ifelse(ss_change, 2, 1)) 
3) 我看不到Ariel选项,但您可以通过使用
par(family=“sans”)

下面是一个满足您要求的代码:

library(cluster)
library(dendextend)
d1 <- c(paste(rep("firstcelltype",7),1:7,sep="_"), paste(rep("secondcelltype", 3),1:3,sep="_"))
d1.df <- as.data.frame(t(combn(d1,2)))
set.seed(1)
d1.df$DIST <- sample(1:100, 45)
dmat <- with(d1.df, structure(DIST,
        Size = length(d1),
        Labels = d1,
        Diag = FALSE,
        Upper = FALSE,
        method = "user",
        class = "dist"))
c1 <- hclust(dmat, method="complete")
dend <- as.dendrogram(c1)
vals <- grep("second", d1, val=TRUE)

ss_change <- grepl("secondcelltype", labels(dend))

dend <- dend %>% 
        set("labels_colors", ifelse(ss_change, 2, 1)) %>%
        set("leaves_pch", ifelse(ss_change, 15, 19)) %>%
        set("leaves_col", ifelse(ss_change, 2, 1)) 
# str(unclass(dend))
# plot(dend)

dend <- dend %>% 
        set("leaves_cex", 2) %>%
        set("by_labels_branches_col", value = vals, TF_values = c(2,Inf)) %>%
        set("by_labels_branches_lwd", value = vals, TF_values = c(4,2))


par(family = "sans")
mar.default <- c(5,4,4,2) + 0.1
par(mar = mar.default + c(0, 0, 0, 5)) 
plot(dend, main = "MY TITLE", xlab="my.X", horiz=TRUE)
库(集群)
图书馆(Dendestend)

d1非常感谢您!我在中尝试了这种方法,但出于某种原因c(a$nodePar,list(col='blue',lab.col='blue',pch=15))更改了col和lab.col,但没有更改pch…如果您能够发现将字体更改为Arial,请更新!谢谢@丹尼斯,不客气。使用dendrapply手动解决这些问题可能非常乏味(因为它需要了解信息的存储方式)。这是我写Dendestend的部分动机。至于字体,我认为这本身就值得一问(看看其他人是否有建议)。干杯,塔尔
library(cluster)
library(dendextend)
d1 <- c(paste(rep("firstcelltype",7),1:7,sep="_"), paste(rep("secondcelltype", 3),1:3,sep="_"))
d1.df <- as.data.frame(t(combn(d1,2)))
set.seed(1)
d1.df$DIST <- sample(1:100, 45)
dmat <- with(d1.df, structure(DIST,
        Size = length(d1),
        Labels = d1,
        Diag = FALSE,
        Upper = FALSE,
        method = "user",
        class = "dist"))
c1 <- hclust(dmat, method="complete")
dend <- as.dendrogram(c1)
vals <- grep("second", d1, val=TRUE)

ss_change <- grepl("secondcelltype", labels(dend))

dend <- dend %>% 
        set("labels_colors", ifelse(ss_change, 2, 1)) %>%
        set("leaves_pch", ifelse(ss_change, 15, 19)) %>%
        set("leaves_col", ifelse(ss_change, 2, 1)) 
# str(unclass(dend))
# plot(dend)

dend <- dend %>% 
        set("leaves_cex", 2) %>%
        set("by_labels_branches_col", value = vals, TF_values = c(2,Inf)) %>%
        set("by_labels_branches_lwd", value = vals, TF_values = c(4,2))


par(family = "sans")
mar.default <- c(5,4,4,2) + 0.1
par(mar = mar.default + c(0, 0, 0, 5)) 
plot(dend, main = "MY TITLE", xlab="my.X", horiz=TRUE)