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())