R 组合填充图例和彩色ggplot,只给出一个图例

R 组合填充图例和彩色ggplot,只给出一个图例,r,ggplot2,R,Ggplot2,我正在使用geom_smooth和geom_ribbon为我的数据绘制一个平滑,并为该平滑绘制着色置信区间。无论我尝试什么,我都无法获得一个能够正确表示平滑和色带的图例,也就是说,我想要一个能够为平滑和色带提供正确颜色和标签的图例。我曾经尝试过使用+指南(fill=FALSE),指南(color=FALSE),我还读到,在实验室()中给颜色和填充相同的标签应该会产生一个统一的图例 任何帮助都将不胜感激 请注意,我还尝试使用scale\u color\u manual() 下面的代码生成下图。请注

我正在使用
geom_smooth
geom_ribbon
为我的数据绘制一个平滑,并为该平滑绘制着色置信区间。无论我尝试什么,我都无法获得一个能够正确表示平滑和色带的图例,也就是说,我想要一个能够为平滑和色带提供正确颜色和标签的图例。我曾经尝试过使用
+指南(fill=FALSE)
指南(color=FALSE)
,我还读到,在
实验室()中给
颜色和
填充
相同的标签应该会产生一个统一的图例

任何帮助都将不胜感激

请注意,我还尝试使用
scale\u color\u manual()

下面的代码生成下图。请注意,这里有两条曲线基本上是重叠的。重新标记和设置coours对
geom_平滑
图例有效,但对
geom_ribbon
图例无效,我仍然有两个图例显示我不想要的内容。


问题在于,您为颜色美学提供了新标签,但没有为填充美学提供新标签。因此,ggplot显示两个图例,因为标签不同

您也可以为填充美学提供相同的标签(下面的代码选项#1),也可以在调用ggplot(代码选项#2)之前为分组变量(“标记”)的级别设置标签

库(ggplot2)
#制作一些数据
x=seq(0,2*pi,by=0.01)

谢谢你@AndreasM,我真的很感激!
ggplot(pred.dat, aes(x = age.x, y = fit, colour = tagged)) + 
  geom_smooth(size = 1.2) + 
  geom_ribbon(aes(ymin = lci, ymax = uci, fill = tagged), alpha = 0.2, colour = NA) + 
  theme_classic() + 
  labs(x = "Age (days since hatch)", y = "Body mass (g)", colour = "", fill = "") + 
  scale_colour_manual(labels = c("Untagged", "Tagged"), values = c("#3399FF", "#FF0033")) +
  theme(axis.title.x = element_text(face = "bold", size = 14), 
        axis.title.y = element_text(face = "bold", size = 14), 
        axis.text.x = element_text(size = 12), 
        axis.text.y = element_text(size = 12),
        legend.text = element_text(size = 12)) 
library(ggplot2)

#make some data
x = seq(0,2*pi, by = 0.01)
pred.dat <- data.frame(x = c(x,x),
                       y = c(sin(x), cos(x)) + rnorm(length(x) * 2, 0, 1),
                       tag = rep(0:1, each = length(x)))

pred.dat$lci <- c(sin(x), cos(x)) - 0.4
pred.dat$uci <- c(sin(x), cos(x)) + 0.4

#option 1: set labels within ggplot call
pred.dat$tagged <- as.factor(pred.dat$tag)

ggplot(pred.dat, aes(x = x, y = y, color = tagged, fill = tagged)) + 
  geom_smooth(size = 1.2) +
  geom_ribbon(aes(ymin = lci, ymax = uci), alpha = 0.2, color = NA) +
  scale_color_manual(labels = c("untagged", "tagged"), values = c("#F8766D", "#00BFC4")) +
  scale_fill_manual(labels = c("untagged", "tagged"), values = c("#F8766D", "#00BFC4")) +
  theme_classic() + theme(legend.title = element_blank())

#option 2: set labels before ggplot call
pred.dat$tagged <- factor(pred.dat$tag, levels = 0:1, labels = c("untagged", "tagged"))

ggplot(pred.dat, aes(x = x, y = y, color = tagged, fill = tagged)) + 
  geom_smooth(size = 1.2) +
  geom_ribbon(aes(ymin = lci, ymax = uci), alpha = 0.2, color = NA) +
  theme_classic() + theme(legend.title = element_blank())