我正在尝试生成一个覆盖了两个分组geom_hline的分组geom_line图。在所有3种情况下,分组都是相同的。问题是图例仅为geom_line (+ geom_point)显示,而不是为两个geom_hline命令显示。理想的结果应该是3个图例,每个图例有3条线表示每个组(用相关的虚线/虚线表示geom_hline)。或者,在geom_hline命令的颜色变量中显示标记为I的黑色虚线和虚线的其他图例也可以使用。下面的数据,代码和图表,提前感谢您的帮助!
数据(dput):
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")

发布于 2021-05-24 23:34:58
我自己解决了这个问题。对于遇到同样情况的人来说,很快就会发现:不要对每个geom_hline使用一个数据帧。我简单地将数据帧(acc.df和acc.exp)合并在一起(添加了一个列变量来区分它们),然后在一个geom_hline命令中为我的分组设置“颜色”和“线型”美学。
https://stackoverflow.com/questions/67638827
复制相似问题