我一直试图在我的绘图中包含一个图例,该图例在线条旁边显示月份的名称以及其各自的颜色和形状,但我无法弄清楚。
我尝试使用scale_color_hue(),但得到了两个不同的图例
isop_temp <- ggplot(bio_all_data, aes(t_2m, isop)) +
geom_jitter(aes(shape = month, colour = month, fill = month)) +
geom_smooth(aes(group = month, colour = month), method='lm',
fullrange = T, se = F) +
theme_bw() +
ylim(0, 4.5) +
xlab('temperature °C')+
ylab('Isoprene[ppb]') +
theme(legend.position = "top") +
scale_color_hue(labels = c('February','March','April','May','June'))
这就是我所得到的。我想念什么?
答案 0 :(得分:2)
简短的回答:您需要添加带有相同标签的scale_shape()
。
这里的问题是,您将一个变量(月份)映射到3种美学效果-颜色,形状和填充。那会给你一个传说,但是添加scale_color_hue()
可以将颜色和形状的映射分开。
为了举例说明,我们将省略填充,因为只有颜色与geom_point
有关。可以按预期工作:
library(ggplot2)
iris %>%
ggplot(aes(Sepal.Length, Petal.Width)) +
geom_point(aes(color = Species, shape = Species))
现在,我们添加scale_color_hue
。我们得到一个单独的图例,因为标签与映射到形状时使用的默认标签不同:
iris %>%
ggplot(aes(Sepal.Length, Petal.Width)) +
geom_point(aes(color = Species, shape = Species)) +
scale_color_hue(labels = LETTERS[1:3])
最简单的解决方法是在scale_shape
中使用相同的标签。或者,您可以dplyr::mutate()
在数据框中添加带有月份名称的列,然后映射到该列。
iris %>%
ggplot(aes(Sepal.Length, Petal.Width)) +
geom_point(aes(color = Species, shape = Species)) +
scale_color_hue(labels = LETTERS[1:3]) +
scale_shape(labels = LETTERS[1:3])