微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为具有置信区间 (geom_ribbon) 和密度图的线图添加图例

如何解决为具有置信区间 (geom_ribbon) 和密度图的线图添加图例

我有一个包含置信区间 (geom_ribbon()) 的线图和基础数据的附加密度图(来自不同数据框)的图。

我想添加一个包含三个条目的图例:线、置信区间和密度。 考虑以下 MWE:(在 t1 中,yloyup 标记 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?