我的点几何图形覆盖树状图中的标签几何图形

问题描述 投票:0回答:1

我正在尝试创建一个树状图,用标签和几何点来传达单独的信息。但是,我编写的用于使分支末尾的点美观的代码会覆盖标签的美观代码。如何在同一个情节中传达两种美学?

这是该图的基本代码:

p2 <- ggplot(segment(dendro_data(nt.agna.dend))) +
  geom_segment(aes(x=x, y=y, xend=xend, yend=yend))

其中 nt.agna.data 是树状图的数据

这是文本的编码

p3 <- p2 + geom_text(data=label(dendro_data(nt.agna.dend)),
               aes(label=label, x=x, y=y, colour=n_labs$group),
               hjust = 1.5, angle = 90, size = 2.3) 

其中 n_labs 包含树状图点的标记信息。

这会创建一个类似 this 的图,其中标签按颜色排列 但是,当我包含点美学数据时,文本美学会被覆盖:

p4 <- p3 + geom_point(data=label(dendro_data(nt.agna.dend)),
                     aes(x=x,y=y,shape=n_labs$factor, colour=n_labs$factor),
                     size = 2.3) +
           scale_shape_manual(values=c(20,4)) +
           scale_colour_manual(values=c("PRE"="red","NOT"="black"))

创建像this这样的情节,其中的点具有美观性,但标签没有。 我怎样才能在同一个情节中传达两种美学信息,而不会让一个信息覆盖另一个信息?,我做错了什么?

r ggplot2 dendrogram geom-text geom-point
1个回答
0
投票

要为标签和点着色,您必须创建适当的调色板,其中包括要分配给标签组的颜色和点类别的颜色。因为您的调色板仅将颜色分配给

nlabs$factor
的类别。因此,您的标签被分配为
na.value=

使用一些基于

ggdendro
入门 小插图中的默认示例的虚假示例数据:

library(ggdendro)
library(ggplot2)

set.seed(123)

model <- hclust(dist(USArrests), "ave")
nt.agna.dend <- as.dendrogram(model)

n_labs <- label(dendro_data(nt.agna.dend))
n_labs$group <- sample(LETTERS[1:9], nrow(n_labs), replace = TRUE)
n_labs$factor <- sample(c("PRE", "NOT"), nrow(n_labs), replace = TRUE)

# Create color palette
pal_color <- scales::hue_pal()(length(unique(n_labs$group)))
names(pal_color) <- unique(n_labs$group)
pal_color <- c(pal_color, c("PRE" = "red", "NOT" = "black"))

ggplot(segment(dendro_data(nt.agna.dend))) +
  geom_segment(aes(x = x, y = y, xend = xend, yend = yend)) +
  geom_text(
    data = label(dendro_data(nt.agna.dend)),
    aes(label = label, x = x, y = y, colour = n_labs$group),
    hjust = 1, angle = 90, size = 2.3, nudge_y = -2
  ) +
  geom_point(
    data = label(dendro_data(nt.agna.dend)),
    aes(x = x, y = y, shape = n_labs$factor, colour = n_labs$factor),
    size = 2.3
  ) +
  scale_shape_manual(values = c(20, 4)) +
  scale_colour_manual(values = pal_color) +
  scale_y_continuous(expand = expansion(mult = .05, add = c(20, 0)))

© www.soinside.com 2019 - 2024. All rights reserved.