r - 可能具有不同美学的多个geom_smooth?
问题描述
我必须使用相当复杂的颜色编码方案才能区分多条线/点。例如,我使用开放符号来区分填充和颜色。绘制了下图:
https://portal.idiv.de/nextcloud/index.php/s/LEJ9gnpN3fB6kAK
但是,除此之外,我想绘制一条线来表示所有线的平均值。但是因为我已经用填充和颜色指定了上面的美学,所以我无法撤消这个,但这是需要的......
此外,是否有机会拥有一个结合形状、线条和颜色的图例?问题是,对于一条线,我无法绘制回归线,因为只有一个 x 值...
编码:
#dataset
data.red <- read_csv("https://www.idiv.de/fileadmin/content/Files_EIE/Teaching/data.red.csv")
#color coding etc
experiment <- factor(data.red1$experiment, levels= c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"))
color.experiment <-c("#2b83ba","#78c588", "#3f6d49","#018571","#123f1b","#78c588","#3f6d49","#018571","#fdae61","#d7191c","#d7191c")
fill.experiment <- c("#2b83ba", "#ffffff","#ffffff","#ffffff","#ffffff","#78c588","#3f6d49","#018571","#fdae61","#000000","#000000")
line.experiment <- c("solid", "solid", "dashed", "dotted", "dotdash", "longdash", "twodash", "dashed", "solid", "solid", "dashed")
#plot
ggplot(data.red, aes(x=log.div.level , y=bas, color=experiment, shape=experiment, fill=experiment)) +
labs(x="SR", y="value") +
geom_point(stroke = 1.3)+
geom_smooth(method=lm, se=F, na.rm=F, aes(linetype=experiment))+
scale_shape_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=c(15,24,24,24,24,25,25,25,16,18,5))+
scale_colour_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=color.experiment)+
scale_fill_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=fill.experiment)+
scale_linetype_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=line.experiment)
解决方案
您必须简单地将数据和映射参数放在每个几何图形中,如下所示:
ggplot() +
geom_point(data = data.red,
mapping = aes(x=log.div.level ,
y=bas, color=experiment,
shape=experiment,
fill=experiment),
stroke = 1.3)+
geom_smooth(data = data.red,
mapping = aes(x=log.div.level , y=bas,
color=experiment, linetype=experiment),
method=lm, se=F, na.rm=F)+
scale_shape_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=c(15,24,24,24,24,25,25,25,16,18,5))+
scale_colour_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=color.experiment)+
scale_fill_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=fill.experiment)+
scale_linetype_manual(name = "Experiment", breaks=c("SATAKUNTA","BANGOR", "BIOTREE", "FORBIO","IDENT_AUCLAIR", "IDENT_MN", "KREINITZ", "ORPHEE", "BEFChina","SABAH", "SARDINILLA"), values=line.experiment) +
labs(x="SR", y="value") +
geom_smooth(data = data.red, method=lm,
mapping = aes(x=log.div.level ,
y=bas),
se=F, na.rm=F, col = 'black' )
此代码在您要求的内容中添加了一条黑色水平线。
推荐阅读
- python - 从numpy数组中删除连续数字
- xpath - Xpath,使用两个查询返回两条信息而不是同时返回
- javascript - 移动设备上的vue路由器延迟
- java - 从 ArrayList 中提取特定数据
- .net - 画布过度拉伸图像元素,两者都在同一个 wpf 网格上
- python-3.x - 我需要在 DNA 字符串中搜索模式 GGG + N(1-7) + GGG + N(1-7) + GGG
- dart - 颤振动画不起作用
- wpf - WPF 将文本块绑定到父属性
- java - 遵循 OWASP 建议,在 Java 中保护简单的 JAX-WS Web 服务
- r - 按组运行回归并粘贴到原始数据框中以预测值 - 提供示例代码