2016-07-14 8 views
1

によって異なる休業ノードの色やタイプIはdendextend(vignette)を使用して、次のMWEを書かれている:R: - カスタマイズされた樹状図のラベル

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() 

私はすべての可能な組み合わせとの距離行列を作成され、ここで何私のラベルの "d1"といくつかのランダムな値が距離として表示されます。

私はhclust結果のうち、樹形図を作成し、以下のTIFFファイルに保存します。 test.tiff

ご覧のように、私は「secondcelltype」の支店を変更することができましたが、私は助けを必要とそれを行うことも可能である場合、次の操作を実行します

1 - 変更「secondcelltype」赤のラベル(そしておそらく太字やイタリック - 赤の広場

2に変更し、「secondcelltype」休暇ノード)

3 - 私はここにいくつかの助けを本当に感謝

をArialのためにどこにでも変更フォント! dendextendよりもこれを行うより良い方法がある場合は、私に知らせてください。ありがとう!

答えて

1

いくつかの応答:

1)あなたがここに

2をggdendroは必要ありませんが)あなたが使用する必要があります。

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)私はアリエルオプションを見ることができないが、 par(family = "sans")

ここでは、尋ねたことをするコード:

を使用して、 "serif"、 "sans"、 "mono"などの標準値を使用できます
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) 

enter image description here

+0

ありがとうございました!私はhttp://stackoverflow.com/questions/14118033/horizo​​ntal-dendrogram-in-r-with-labels/14118735#14118735でアプローチを試していましたが、なんらかの理由でc($ nodePar、list(col = 'blue' 、lab.col = 'blue'、pch = 15))colとlab.colは変更されますが、pchは変更されません。 – DaniCee

+0

変更するフォントをArialに見つけることができる場合は、更新してください!ありがとう! – DaniCee

+0

@DaniCeeようこそ。手動でdendrapplyを使ってこれらの問題を解決することは非常に面倒です(情報の保存方法をある程度理解する必要があるため)。これはデンデキテントを書くための私の動機の一部でした。フォントに関しては、それ自体がSOの質問の価値があるかもしれないと思います(そして、他の人に提案があるかどうかを見てください)。乾杯、タル –

関連する問題