千家信息网

R语言可视化实现图表嵌套

发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,这篇文章主要介绍"R语言可视化实现图表嵌套",在日常操作中,相信很多人在R语言可视化实现图表嵌套问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"R语言可视化实现图表嵌套"
千家信息网最后更新 2024年10月25日R语言可视化实现图表嵌套

这篇文章主要介绍"R语言可视化实现图表嵌套",在日常操作中,相信很多人在R语言可视化实现图表嵌套问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"R语言可视化实现图表嵌套"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

之前在学习ggplot的时候,一直存在着一个困惑。

就是这个函数是否允许两个做出来的两个相关图表重叠嵌套(也就是在一个大图(主图)的边缘位置,放置另一个缩小版的小图)。

这个想法很奇葩,本来想着没啥希望,鉴于该包的开发者那犀利的审美观,估计也不能允许这种情况的发生。

不过最近浏览一位大神的博客,真的有这种情况的解决措施,喜出望外,赶紧在这里分享给大家。

不过他的处理方式不是通过ggplot的内置函数,而是通过grid包中的viewport函数来实现的:

以下是具体的实现步骤:

加载包:

library(ggplot2) #用于画图,主图和附图都使用ggplot的内置数据集

library(grid) #用于设定附图的长宽及叠放在主图的精确位置

加载并预览数据集:

这里我们还是使用关于钻石的那个数据集(之前的图表案例很多都是使用该数据集)

data(diamonds)

head(diamonds)


#制作复合图的主图:

chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))


以上函数可以制作出以carat和price为主要对应关系的散点图,同时分类变量cut通过颜色映射进行区分。最后调整了图例位置和图表背景。

#设定附图长宽及其最终落在主图上的精确位置:

vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)

#制作附图

chart2 <-ggplot(diamonds,aes(depth,fill=cut,alpha=.2))+geom_density()+xlim(54,70) +

theme(axis.text.y=element_text(face="bold",colour="black"),

axis.title.y=element_blank(),

axis.text.x=element_text(face="bold",colour="black"),

plot.background=element_rect(I(0),linetype=0),

panel.background=element_rect(I(0)),

panel.grid.major=element_line(colour=NA),

panel.grid.minor=element_line(colour=NA),

legend.background=element_rect(I(0),linetype=1),

legend.position=c(0.85,0.72))

chart2 #预览附图


因为附图要放置在主图边缘并且缩放很大比例,为了防止其背景和网格线系统遮挡主图的重要信息,对其主题元素进行了大量的简化。

将主图与附图合成一并显示:

print(chart2,vp=vie)


将以上代码打包组合:

chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))

chart1

vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)

chart2 <-ggplot(diamonds,aes(depth,fill=cut,alpha=.2))+geom_density()+xlim(54,70) +

theme(axis.text.y=element_text(face="bold",colour="black"),

axis.title.y=element_blank(),

axis.text.x=element_text(face="bold",colour="black"),

plot.background=element_rect(I(0),linetype=0),

panel.background=element_rect(I(0)),

panel.grid.major=element_line(colour=NA),

panel.grid.minor=element_line(colour=NA),

legend.background=element_rect(I(0),linetype=1),

legend.position=c(0.85,0.72))

print(chart2,vp=vie)


其实仔细看这种做法,里面也不外乎图层叠加,先做出主图,然后通过viewport函数将附图缩小并叠加到主图上,不过这种方式用来展示一些需要多角度透视的数据分布问题还是很合适的,而且因为是依赖于不同的包,所有主图与附图之间没有严格的类型限制,你所需要做的只是调整好两个图表的位置与大小,别让彼此相互遮挡掩盖重要信息就OK了。

下面我将附图的类型更换为堆积直方图大家看下效果:

chart1<-ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+theme(legend.position=c(0.9,0.72),legend.background=element_rect(I(0)))

chart1

vie<-viewport(width=0.669,height=0.4,x=0.7,y=0.306)

chart2 <-ggplot(diamonds,aes(depth,fill=color))+geom_histogram()+xlim(54,70) +

theme(axis.text.y=element_text(face="bold",colour="black"),

axis.title.y=element_blank(),

axis.text.x=element_text(face="bold",colour="black"),

plot.background=element_rect(I(0),linetype=0),

panel.background=element_rect(I(0)),

panel.grid.major=element_line(colour=NA),

panel.grid.minor=element_line(colour=NA),

legend.background=element_rect(I(0),linetype=1),

legend.position=c(0.85,0.72))

print(chart2,vp=vie)


到此,关于"R语言可视化实现图表嵌套"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

附图 图表 位置 函数 数据 学习 语言 可视化 两个 制作 精确 重要 信息 情况 方式 更多 类型 背景 边缘 还是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发中ccb是什么意思 昌平区信息网络技术推广优点 群晖vpn服务器 服务器主机没有显卡怎么办 注册网络安全等级测评工程师认证 3d建模师和软件开发哪个好 网络技术有限公司是什么职业 华为青岛软件开发云洗心得体会 datago数据库代查 如何通过向日葵进服务器 软件开发工资属于研发费用吗 软件开发培训什文化 车来了软件开发商联系 牛点网络技术有限公司 esb 与数据库 国家网络安全需要注意哪些 上海柏楚软件开发工程师 网络安全自媒体座谈会 查找关于网络安全的图片 我的世界玩别人的服务器 江苏省三级网络技术题型 物联网网络技术视频教程下载 昌平区信息网络技术推广优点 vac安全服务器 csgo vs找不到创建的数据库 检录一个数据库管理员用户 居民对网络安全有什么需求 网络安全相关的学习 服务器IT设备要求学历 计算机网络技术聚飞专班
0