The problem: =========== Once a dendrogram has a branch with both a line type AND a color (which is a character color), the plot.dendrogram function will not plot and return an error.
I say this is a bug because (I believe), we would like a dendrogram to be able to use character colors, while also allowing control over line types. This e-mail includes an example, and what I think a solution might be. Reproducible example: ================= install.packages('dendextend') library('dendextend') dend <- 1:2 %>% dist %>% hclust %>% as.dendrogram plot(dend) # works fine dend %>% set("branches_lty", 1:2) %>% plot # works fine dend %>% set("branches_col", 1:2) %>% plot # works fine dend %>% set("branches_col", as.character(1:2)) %>% plot # works fine # Fails: dend %>% set("branches_lty", 1:2) %>% set("branches_col", as.character(1:2)) %>% plot ### Error: # Error in segments(x0, y0, x1, y1, col = col, lty = lty, lwd = lwd) : # invalid line type: must be length 2, 4, 6 or 8 # This is because edgePar has to hold both "lty" and "col" # Since "col" is a character, it forces "lty" to become a character also. dend %>% set("branches_lty", 1:2) %>% set("branches_col", as.character(1:2)) %>% unclass %>% str Possible solution ============== The simplest (and backward) compatible solution I can think of is to edit the function: stats:::plotNode And change the following lines: col <- Xtract("col", ePar, default = par("col"), i) lty <- Xtract("lty", ePar, default = par("lty"), i) lwd <- Xtract("lwd", ePar, default = par("lwd"), i) With: col <- Xtract("col", ePar, default = par("col"), i) lty <- as.numeric(Xtract("lty", ePar, default = par("lty"), i)) lwd <- as.numeric(Xtract("lwd", ePar, default = par("lwd"), i)) With regards, Tal [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel