r - 翻转 gg TreeMap

标签 r plot ggplot2 flip ggdendro

我正在使用 ggdendrogram 来绘制树状图,但我希望将标签放在左侧以使图表更直观。我该怎么做呢?谢谢!!!

library(ggplot2)
library(ggdendro)

### Data
countries <- c("UK","AU","SA","CH")
distmatrix <- matrix(c(0.00, 0.16, 1.01, 0.97, 0.16, 0.00, 0.84, 0.79, 1.01, 0.84, 0.00, 1.49, 0.97, 0.79, 1.49, 0.00),
nrow=4,dimnames=list(countries, countries))

### Cluster
hc = hclust(as.dist(distmatrix), method = "ward")

### Plot
ggdendrogram(hc, rotate=TRUE, theme_dendro=FALSE)

最佳答案

重点是代码 ggdendrogramrotate=TRUE 执行以下操作:

if (rotate) {
    p <- p + coord_flip()
    p <- p + scale_y_reverse(expand = c(0.2, 0))
}

但是您不希望完成 scale_y_reverse(.) 。因此,一种方法是您自己执行 coord_flip()

ggdendrogram(hc, rotate=FALSE, theme_dendro=FALSE) + coord_flip()

但是,一个明显的问题是标签无法正确对齐。而且您无法在 ggdendrogram() 函数中执行太多操作,因为它不允许在外部设置 hjustangle 属性。

因此,对于您的情况,我建议您通过复制 ggdendrogram 函数中的行来自行创建 ggplot()

data <- dendro_data(hc)
p <- ggplot() + geom_segment(data = segment(data), 
              aes_string(x = "x", y = "y", xend = "xend", yend = "yend"))
p <- p + geom_text(data = label(data), 
              aes_string(x = "x", y = "y", label = "label"), hjust = 1, angle = 0)
p + scale_y_continuous(expand=c(0.2, 0)) + coord_flip()

这给出:

enter image description here

另一种方法是您根据需要修改ggdendrogram函数并重新编译它。我认为这样做更容易,而且也正是您想要的:

关于r - 翻转 gg TreeMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262371/

相关文章:

python - 使用 R 或 python 在坐标系中绘制向量

r - 如何仅对 R heatmap.2 中的列进行聚类?

r - 如何为ggplot2全局设置主题?

r - 在 R 或 Rstudio 中记录带有错误的控制台历史记录

javascript - 使用 R 将字段添加到在线表单并抓取生成的 javascript 创建的表

r - 如何在 R 绘图标签中使括号更大(以适应其中表达式的大小)?

python - 如何使用 matplotlib 创建大型子图?

r - 如何在 ggplots 中维护配色方案,同时删除每个图中未使用的级别?

r - 如何使用ggplot绘制多因子列?

R: ggplot2 使两个 geom_tile 图具有相等的高度