ggplot2如何画散点图拼接密度图
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,ggplot2如何画散点图拼接密度图,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。image.png前几天有一个读者在公众号留言问上面这
千家信息网最后更新 2026年11月01日ggplot2如何画散点图拼接密度图image.png image.png image.png image.png 接下来是密度图image.png image.png
ggplot2如何画散点图拼接密度图,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
前几天有一个读者在公众号留言问上面这幅图应该如何实现,我想到一个办法是利用ggplot2分别画散点图和密度图,然后利用aplot包来拼图,aplot包是ggtree的作者新开发的一个包,非常重要的一个作用就是解决拼图的时候坐标轴对齐的问题。这个aplot包的用法大家可以在微信搜索里直接搜aplot就可以直接找到原作者写的推文的介绍,而且这个公众号经常推送R语言的学习内容,非常好,作者是真正的大神级别的人物了。
aplot包:让你画出更复杂的图
好了下面就开始介绍具体的实现过程
首先是模拟数据生成两列符合正态分布的数据,然后组合成一个数据框
x<-rnorm(500,0,1)
y<-rnorm(500,0,2)
df<-data.frame(x=x,y=y)
head(df)
先做一个简单的散点图
library(ggplot2)ggplot(df,aes(x=x,y=y))+ geom_point()
按照Y轴的范围填充三个颜色,比如大于3填充一个,小于-3填充另外一种,-3到3中间的填充另外一种
给数据添加一列新的用来映射颜色
df$color<-ifelse(df$y>3,"A",
ifelse(df$y<(-3),"B","D"))
head(df)
画图
ggplot(df,aes(x,y))+
geom_point(aes(color=color))+
scale_color_manual(values=c("green","blue","grey"))+
theme_bw()
接下来是添加辅助线
ggplot(df,aes(x,y))+
geom_point(aes(color=color))+
scale_color_manual(values=c("green","blue","grey"))+
theme_bw()+
geom_hline(yintercept = -3,lty="dashed")+
geom_hline(yintercept = 3,lty="dashed")+
geom_vline(xintercept = -2,lty="dashed")
ggplot(df,aes(x))+
geom_density(fill="grey",alpha=0.5)+
scale_y_continuous(expand = c(0,0))+
theme_minimal()+
theme(axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())
y轴的密度分布也是这样画,下面就不重复了
接下来是拼图library(ggplot2)
library(aplot)
p1<-ggplot(df,aes(x,y))+
geom_point(aes(color=color))+
scale_color_manual(values=c("green","blue","grey"))+
theme_bw()+
geom_hline(yintercept = -3,lty="dashed")+
geom_hline(yintercept = 3,lty="dashed")+
geom_vline(xintercept = -2,lty="dashed")
p2<-ggplot(df,aes(x))+
geom_density(fill="grey",alpha=0.5)+
scale_y_continuous(expand = c(0,0))+
theme_minimal()+
theme(axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())
p3<-ggplot(df,aes(y))+
geom_density(fill="grey",alpha=0.5)+
scale_y_continuous(expand = c(0,0))+
theme_minimal()+
theme(axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())+
coord_flip()
p1%>%
insert_top(p2,height = 0.5)%>%
insert_right(p3,0.5)
看完上述内容,你们掌握ggplot2如何画散点图拼接密度图的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
密度
数据
接下来
内容
问题
作者
公众
方法
更多
颜色
复杂
重要
束手无策
为此
三个
人物
作用
办法
原作
原作者
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州紫鲸互联网科技有限公司
互联网科技财经
互联网 科技创新
互联网科技公司发展
鑫亿盛互联网科技
互联网金融科技创新
易通互联网络科技有限公司
上海致骋互联网科技
互联网科技博客
左右互联网络科技
互联网之后的科技是什么
小米互联网科技园设置
欧洲十大科技互联网公司
996高科技互联网公司
内蒙古九一互联网科技
互联网方面的科技前沿
互联网科技股为什么大涨
有人说阿里系是互联网科技企业
北京品多多互联网科技有限公司
六子台科技互联网展会
金融科技 互联网金融
鑫亿盛互联网科技
丰台科技园 互联网
联恩商钥互联网科技有限公司
中正互联网科技招聘
中国的互联网科技企业的崛起
武汉健翔互联网络科技有限公司
赶超互联网科技 微信多开
互联网时代的科技公司
上海互联网科技园景观