在 geom_line 图中显示多个分组 geom_hline 的图例

Posted

技术标签:

【中文标题】在 geom_line 图中显示多个分组 geom_hline 的图例【英文标题】:Showing legend for multiple grouped geom_hline in a geom_line plot 【发布时间】:2021-08-10 19:07:06 【问题描述】:

我正在尝试生成一个分组的 geom_line 图,其中两个分组的 geom_hline 重叠。所有 3 例中的分组都相同。问题是图例只出现在 geom_line (+ geom_point),而不是两个 geom_hline 命令。理想的结果是 3 个图例,每个图例有 3 条线代表每个组(geom_hline 具有相关的虚线/点线)。或者,在 geom_hline 命令的颜色变量中显示黑色虚线和虚线的附加图例也可以工作。数据、代码和绘图如下所示,提前感谢您的帮助!

数据(输入):

acc.df <- structure(list(intersect.nn = structure(c(1L, 2L, 3L, 1L, 2L, 
3L, 1L, 2L, 3L), .Label = c("CD4", "CD8", "Treg"), class = "factor"), 
    prop = c(0.689912280701754, 0.999746643020015, 0.779661016949153, 
    0.671249111163783, 0.988757981832899, 0.769230769230769, 
    0.666112680737909, 0.981778644271146, 0.776223776223776), 
    K = c("k 1", "k 1", "k 1", "k 2", "k 2", "k 2", "k 3", "k 3", 
    "k 3")), row.names = c(NA, -9L), class = "data.frame")
acc.exp <- structure(list(intersect.exp = structure(1:3, .Label = c("CD4", 
"CD8", "Treg"), class = "factor"), prop = c(0.689912280701754, 
0.999746610921069, 0.779661016949153)), row.names = c(1L, 5L, 
9L), class = "data.frame")
acc.clust <- structure(list(seurat_clusters = structure(1:3, .Label = c("CD4", 
"CD8", "Treg"), class = "factor"), prop = c(0.666275954454119, 
0.981845461365341, 0.774647887323944)), row.names = c(1L, 5L, 
9L), class = "data.frame")

代码:

ggplot(acc.df, aes(x = K, y = prop, group = intersect.nn)) +
  geom_line(aes(color = intersect.nn)) +
  geom_point(aes(color = intersect.nn)) +
  geom_hline(data = acc.exp, aes(yintercept = prop, color = intersect.exp), show.legend = T, linetype = "dashed") +
  geom_hline(data = acc.clust, aes(yintercept = prop, color = seurat_clusters), show.legend = T, linetype = "dotted")

【问题讨论】:

【参考方案1】:

自己设法解决了这个问题。对于处于相同情况的人来说很快:不要为每个 geom_hline 使用数据框。我只是将数据框(acc.df 和 acc.exp)合并在一起(添加一个列变量来区分它们),然后在一个 geom_hline 命令中为我的分组设置“颜色”和“线型”美学。

【讨论】:

以上是关于在 geom_line 图中显示多个分组 geom_hline 的图例的主要内容,如果未能解决你的问题,请参考以下文章

R - geom_line ggplot2中的手动图例颜色

R语言ggplot2可视化多变量组合(interaction,group=interaction())分组下的线图(geom_line)和箱图(geom_boxplot)实战

ggplot2 geom_line 的两个不同图例

没有出现geom_line图例

没有数据时如何避免geom_line或geom_path中的连接线?

Geom_line 基于 y 轴连接几何点?