R:自定义树形图 - 不同的节点颜色和标签类型

时间:2016-07-14 10:21:27

标签: r fonts colors dendrogram dendextend

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

library(cluster)
library(ggdendro)
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)
dend <- dend %>% set("leaves_pch", 19) %>%
        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))
tiff("test.tiff")
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)
dev.off()

我在这里做的只是创建一个距离矩阵,其中包含我的标签在&#34; d1&#34;中的所有可能组合。和一些随机值作为距离。

我从hclust结果中创建了一个树状图,并将其保存在以下TIFF文件中: test.tiff

如您所见,我已经能够更改&#34; secondcelltype&#34;的分支,但如果有可能,我需要帮助以执行以下操作:

  

1 - 更改&#34; secondcelltype&#34;将节点留到红色方块

     

2 - 改变&#34; secondcelltype&#34;标签为红色(可能是粗体或斜体)

     

3 - 将字体到处更改为Arial

我真的很感激这里的一些帮助!如果有更好的方法来做这个比dendextend请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

一些回复:

1)你不需要ggdendro

2)你需要使用:

esk = None

while True:
    scan_generator = YourTableName.scan(max_results=10, exclusive_start_key=esk)
    for item in scan_generator:
        //your code for processing
    //condition to check if entire table is scanned 
    else:
        break;

    # Load the last keys
    esk = scan_generator.kwargs['exclusive_start_key'].values()

3)我无法看到Ariel选项,但您可以使用标准值,例如&#34; serif&#34;,&#34; sans&#34;和&#34; mono&#34;使用 set("labels_colors", ifelse(ss_change, 2, 1)) %>% set("leaves_pch", ifelse(ss_change, 15, 19)) %>% set("leaves_col", ifelse(ss_change, 2, 1))

这是一个符合您要求的代码:

par(family = "sans")

enter image description here