gpt4 book ai didi

r - 当需要 "size"美学和 geom_smooth 时更改图异常(exception)观

转载 作者:行者123 更新时间:2023-12-05 04:00:31 25 4
gpt4 key购买 nike

我有一个包含连续 x 和 y 变量的图,第三个连续变量映射到“尺寸”美学,第四个离散变量映射到“形状”美学。如果我只指定 geom_point(),“大小”刻度的图例会显示不同大小的项目符号,这很好,但如果我还指定 geom_smooth,图例会显示一条线超过子弹,这不是我想要的。在指定 geom_smooth() 时,有没有办法只保留图例中的项目符号?

我试过

guides(size=guide_legend(override.aes=list(shape="circle")))

但是没用

这是一个 MRE:

df <- tibble(a=rnorm(100), b=rnorm(100), c=rnorm(100), d=rep(c("A", "B"), 50))
ggplot(df, aes(x=a, y=b, shape=d, size=c)) +
geom_point()

上面的代码为“size”生成了想要的图例。

我想要的是按组添加平滑线,具有不同的线型:

ggplot(df, aes(x=a, y=b, shape=d, size=c)) + 
geom_point() +
geom_smooth(method="lm", aes(linetype=d), color="black")

大小的图例现在有与项目符号重叠的线条。

当我添加 geom_smooth() 时,我也希望得到第一个代码生成的图例。

最佳答案

要将图例分开(在本例中为线型与尺寸),您可以为它们指定不同的标题。这可能与向其中添加一个空格一样微小,例如 "d""d ",尽管这可能不是最好的主意。

我给线型赋予了自己的标题,所以它有自己单独的图例。我还从尺寸图例的 aes 中删除了线型,方法是给它一个 NA 的线型(NULL 也应该有效)。

library(ggplot2)

set.seed(515)
df <- tibble::tibble(a=rnorm(100), b=rnorm(100), c=rnorm(100), d=rep(c("A", "B"), 50))
ggplot(df, aes(x=a, y=b, shape=d, size=c)) +
geom_point() +
geom_smooth(method="lm", aes(linetype=d), color="black") +
guides(linetype = guide_legend(title = "d - line"),
size = guide_legend(title = "c", override.aes = list(linetype = NA)))

关于r - 当需要 "size"美学和 geom_smooth 时更改图异常(exception)观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56153226/

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