gpt4 book ai didi

R - 组合 geom_vline 和 geom_smooth 在图例中

转载 作者:行者123 更新时间:2023-12-04 01:14:13 31 4
gpt4 key购买 nike

在我的 ggplot2 图表中添加 geom_smooth()geom_vline() 时,我在我的图例中遇到了一些奇怪的行为。这是一个可重现的示例:

library(ggplot2)
n <- 60

set.seed(123)
df <- data.frame(Area = sample(c("A", "B", "C", "D"), size = n, replace = TRUE),
x = runif(n),
y = runif(n),
Type = sample(c("I", "II"), size = n, replace = TRUE),
Result = sample(c("K", "L", "M"), size = n, replace = TRUE))

df.breaks <- data.frame(Area = c("B", "C"), x = c(0.8, 0.3))

ggplot(df, aes(x = x, y = y)) +
geom_point(aes(colour = Result, shape = Type), size = 3) +
geom_smooth(aes(linetype = "Smooth"), colour = "green", se = FALSE) +
geom_hline(yintercept = 0.3) +
facet_wrap(~Area) +
geom_vline(data = df.breaks, aes(xintercept = x, linetype = "Break"), colour = "purple") +
scale_colour_manual(values = c("K" = "red", "L" = "orange", "M" = "blue")) +
scale_linetype_manual(name = "Lines", values = c("Break" = "dashed", "Smooth" = "solid"))

enter image description here

正如您会注意到的,“线条”图例在每个项目中都有垂直线和水平线,在第一种情况下有几条虚线,而在第二种情况下有几条实线。我正在尝试调整我的代码以生成一个图例,其中包含 (1) 一条水平绿线和一个名为“Smooth”的键,以及 (2) 一条垂直的紫色虚线,旁边有一个名为“Break”的键。我将不胜感激,因为无论我尝试过什么(包括 linetype 内部/外部 aes() 等,或使用 scale_linetype_identity() ,甚至 override.aes 中的 guides 选项)我都找不到正确的组合!

我搜索了类似的例子,尽管我发现其他帖子在 colourfillshape 等上有一条叠加的垂直线,但我找不到像我这样的在 linetype 图例上有一条垂直线的帖子。任何帮助将不胜感激!谢谢!

最佳答案

对这个问题的迟来答复,但我认为最好有一个可用的答案,以防其他人(或我 future 的自己!)对此感兴趣。

按照@aosmith 在评论部分的建议和他提供答案的鼓励,我最终将情节代码替换为:

ggplot(df, aes(x = x, y = y)) + 
geom_point(aes(colour = Result, shape = Type), size = 3) +
geom_hline(yintercept = 0.3) +
facet_wrap(~Area) +
geom_vline(data = df.breaks,
aes(xintercept = x, linetype = "Break"), colour = "purple") +
scale_colour_manual(values = c("K" = "red", "L" = "orange", "M" = "blue")) +
scale_linetype_manual(name = "Lines",
values = c("Break" = "dashed", "Smooth" = "solid")) +
geom_smooth(aes(fill = "Smooth"), method = "loess", colour = "green", se = FALSE) +
scale_fill_discrete(name = "")

上面的最后两行替换了原始代码中的以下行:
geom_smooth(aes(linetype = "Smooth"), colour = "green", se = FALSE) + .

生成的图表仍然需要一些工作,尤其是图例间距,但它解决了原始问题。

Vertical and Horizontal Line Legend

关于R - 组合 geom_vline 和 geom_smooth 在图例中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797041/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com