如何解决为具有置信区间 (geom_ribbon) 和密度图的线图添加图例
我有一个包含置信区间 (geom_ribbon()
) 的线图和基础数据的附加密度图(来自不同数据框)的图。
我想添加一个包含三个条目的图例:线、置信区间和密度。
考虑以下 MWE:(在 t1
中,ylo
和 yup
标记 CI,y
为线,t2
包含密度图的数据。
(我尝试合并 this question 中的代码但无济于事。)
library(tidyverse)
t1 <- tibble(x = c(0:22)) %>%
mutate(ylo = c(seq(from = .25,to = 1.35,length.out=10),seq(from = 1.35,to = -1.22,length.out=13)),y = .25 * x + 1,yup = c(seq(from = 2.75,to = 4.5,seq(from = 4.75,to = 12,length.out=13)))
t2 <- tibble(x = rnorm(100000,10,1))
ggplot() +
geom_line(data = t1,aes(x=x,y=y)) +
geom_ribbon(data = t1,y=y,ymin=ylo,ymax=yup),linetype=2,alpha=.15) +
geom_hline(linetype='dotted',yintercept = 0) + labs(y = "Y",x = "X") + theme_bw() +
geom_density(data = t2,aes(x = x),color="darkblue",fill="lightblue",linetype="dashed") +
scale_color_manual(values = c("#000000","grey60","lightblue"),name = "Title") + # from other answer; Couldn't get it to work
coord_cartesian(ylim = c(-0.0125,12.5),xlim = c(-0.5,22))
非常感谢您的指点! :)
解决方法
传说的出现只是为了美观。您需要将颜色、填充、线型、alpha 等等等传递到您对 aes
的调用中。
您可以以编程方式使用任一列,即传递不带引号的列名(通常是首选),但您也可以只传递一个字符串,这将创建一个离散的美学,然后您可以像往常一样使用 scale_?aes_ 进行缩放。 ..
下面我只是在字符向量中添加了标题和标签,只是为了明确名称的来源。
library(tidyverse)
t1 <- tibble(x = c(0:22)) %>%
mutate(ylo = c(seq(from = .25,to = 1.35,length.out=10),seq(from = 1.35,to = -1.22,length.out=13)),y = .25 * x + 1,yup = c(seq(from = 2.75,to = 4.5,seq(from = 4.75,to = 12,length.out=13)))
t2 <- tibble(x = rnorm(100000,10,1))
ggplot() +
geom_line(data = t1,aes(x=x,y=y,lty = "myline-label")) +
geom_ribbon(data = t1,ymin=ylo,ymax=yup,fill = "MyCI-label"),linetype=2,alpha=.15) +
geom_hline(linetype='dotted',yintercept = 0) + labs(y = "Y",x = "X") +
geom_density(data = t2,aes(x = x,color="MyDens-label"),fill="lightblue",linetype="dashed") +
scale_linetype("Myline-title") +
scale_fill_discrete("MyCI-title") +
scale_color_manual("MyDens-title",values = c("Darkblue"))
由 reprex package (v1.0.0) 于 2021 年 4 月 7 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。