【问题标题】:Labelling ggdendro leaves in multiple colors用多种颜色标记 ggdendro 叶子
【发布时间】:2011-12-24 03:17:32
【问题描述】:

我有一种情况,我正在用带有类标签的数据点绘制一个树状图。 我希望看到凝聚聚类将具有相同标签的人组合在一起。对标签进行颜色编码可以很容易地阅读这样的树状图。有没有办法在 R 中使用 ggdendro 来实现这一点?

【问题讨论】:

    标签: r colors ggplot2 dendrogram


    【解决方案1】:

    this post 窃取大部分设置...

    library(ggplot2)
    library(ggdendro)
    data(mtcars)
    x <- as.matrix(scale(mtcars))
    dd.row <- as.dendrogram(hclust(dist(t(x))))
    ddata_x <- dendro_data(dd.row)
    
    p2 <- ggplot(segment(ddata_x)) +
      geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
    

    ...并添加分组因子...

    labs <- label(ddata_x)
    labs$group <- c(rep("Clust1", 5), rep("Clust2", 2), rep("Clust3", 4))
    labs
    #     x y text  group
    # 1   1 0 carb Clust1
    # 2   2 0   wt Clust1
    # 3   3 0   hp Clust1
    # 4   4 0  cyl Clust1
    # 5   5 0 disp Clust1
    # 6   6 0 qsec Clust2
    # 7   7 0   vs Clust2
    # 8   8 0  mpg Clust3
    # 9   9 0 drat Clust3
    # 10 10 0   am Clust3
    # 11 11 0 gear Clust3
    

    ...您可以使用geom_text()aes(colour=) 参数为标签着色:

    p2 + geom_text(data=label(ddata_x),
                   aes(label=label, x=x, y=0, colour=labs$group))
    

    (如果你想提供自己的颜色,你可以使用scale_colour_manual(),做这样的事情:

    p2 + geom_text(data=label(ddata_x),
                   aes(label=label, x=x, y=0, colour=labs$group)) +
         scale_colour_manual(values=c("blue", "orange", "darkgreen"))
    

    【讨论】:

    • 谢谢!我对 R 比较陌生,这对我很有帮助。
    • 运行你的代码,我得到2个错误:1)在geom_segment,它找不到x0,但这只是通过更改x=x, y=y, xend=xend, yend=yend中的参数来解决的; 2) 在geom_text 中,它说:Don't know how to automatically pick scale for object of type function. Defaulting to continuous Error in data.frame(x = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), y = 0, label = function (x, : arguments imply differing number of rows: 11, 1, 0。我该如何解决?因为我有类似的情况要处理(即着色标签)并提供相同的错误。
    • @DavidePassaretti -- 在 Andrie de Vries(ggdendro 的作者)和 Roland(另一位 SO 常客)的帮助下,我编辑了代码,使其能够与ggdendro 的当前版本。感谢您提醒这个答案不再起作用!
    • 有没有办法给叶子上色而不是给标签上色?谢谢
    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    相关资源
    最近更新 更多