我有一个带有连续x和y变量的图,第三个连续变量映射到"size“美学,第四个离散变量映射到"shape”美学。如果我只指定geom_point()
," size“比例的图例将显示不同大小的项目符号,这很好,但如果我还指定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()
时,我也希望有第一个代码生成的图例。
发布于 2019-05-16 00:19:32
要将图例(在本例中为线型和大小)分开,可以为它们指定不同的标题。这可能和在其中添加一个空格一样小,比如"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)))
https://stackoverflow.com/questions/56153226
复制相似问题