我想在ggplot散点图上有两个图例:一个用于点颜色,另一个用于回归线颜色。
您能解释一下如何为这两条回归线添加单独的图例吗?
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_point(aes(color = gear)) +
geom_smooth(method='lm', formula=y~x, se = FALSE, size = 0.5, color = 'dark green') +
geom_smooth(method='lm', aes(mpg, hp), data = mtcars[mtcars$wt > 3, ], se = FALSE, size = 0.5, color = 'dark orange', fullrange = TRUE)
答案 0 :(得分:4)
需要注意的两点:
aes(color = XXX, ...)
的所有徽标,ggplot将为每个映射的美学生成仅一个图例。创建单独图例的一种解决方法是利用某些形状(可以在geom_point()
中指定)可以采用fill
美学以及color
美学的事实。图片取自here。形状21-25同时接受color
(以黑色表示)& fill
(以红色表示)。
aes()
中指定美学。但有时我们希望直接为每一行指定颜色。一种解决方法是使用scale_XXX_manual()
选项,该选项允许您在geom中指定aes(color = "some label")
,并在scale_color_manual(values = c("some label" = "some color"))
代码:
ggplot(mtcars,
aes(x = mpg, y = hp)) +
geom_point(aes(fill = gear), shape = 21) + # specify shape here
geom_smooth(method = 'lm', formula = y~x,
se = FALSE, size = 0.5,
aes(color = "lm1")) + # specify color within aes()
geom_smooth(method = 'lm', se = FALSE, size = 0.5,
data = mtcars[mtcars$wt > 3, ],
aes(x = mpg, y = hp, color = "lm2"), # as above
fullrange = TRUE) +
scale_fill_continuous(name = "Points") + # legend name
scale_color_manual(name = "Regression", # legend name
values = c("lm1" = "darkgreen", # map regression line colors
"lm2" = "darkorange"))
答案 1 :(得分:0)
问题是因为齿轮是一个数值,如果你想要一个单独的图例,你需要使用离散值,如 factor 或 character 数据类型,所以您可以像这样更改geom_point
的图层:
geom_point(aes(color = factor(gear)))