前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ggplot2画密度分布图按取值范围填充不同的颜色

ggplot2画密度分布图按取值范围填充不同的颜色

作者头像
用户7010445
发布2020-12-08 10:57:52
发布2020-12-08 10:57:52
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

之前发过一篇推文 ggplot2画散点图拼接密度图 模仿下面这幅图片。但是遇到一个问题是如何给密度图某一个部分填充不同的颜色,就像下面的图片被红色方框圈住的部分。

image.png

今天找到了解决办法,在这里记录一下。

参考链接是 ggplot2 area plot : Quick start guide - R software and data visualization - Easy Guides - Wiki - STHDA

首先是最基本的密度分布图

第一步是构造数据
代码语言:javascript
代码运行次数:0
运行
复制
x<-rnorm(500,0,1)
df<-data.frame(x)
df
基本的密度分布图
代码语言:javascript
代码运行次数:0
运行
复制
ggplot(df,aes(x))+
  geom_density()

image.png

填充颜色用fill参数,更改线条颜色用color参数
代码语言:javascript
代码运行次数:0
运行
复制
ggplot(df,aes(x))+
  geom_density(fill="#e72a8a",
               color="#1c9e77",
               size=1.5)+
  theme_bw()

image.png

这里需要注意的一个问题是默认的Y轴是小数,应该是某个值占所有的数据的比例,如果要把它改成频数可以加stat="bin"参数

代码语言:javascript
代码运行次数:0
运行
复制
ggplot(df,aes(x))+
  geom_density(fill="#e72a8a",
               color="#1c9e77",
               size=1.5,
               stat="bin")+
  theme_bw()

image.png

上面的图如果想要给x小于-2和大于2的填充另外一种颜色改如何实现呢?

代码语言:javascript
代码运行次数:0
运行
复制
dat<-with(density(df$x),data.frame(x,y))
dat
dat1<-dat[dat$x<(-2),]
dat2<-dat[dat$x>2,]
ggplot()+
  geom_density(data=df,aes(x=x),fill="red")+
  geom_area(data=dat1,aes(x=x,y=y),fill="blue")+
  geom_area(data=dat2,aes(x=x,y=y),fill="blue")+
  theme_bw()

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是最基本的密度分布图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档