一个震撼的交互型3D可视化R包 - rayshader

虽然3D的plot见得比较多了,但是看见这样的R包,我的心还是了一下,这个简直不能再好看了!

关键是!!!敲黑板,这个R包超简单!!!对于刚学习R语言的同学们来说,会被圈粉哒!

该包的主要功能就是将ggplot2画出来的2D图像变为3D图像,不说废话,直接上代码。

# 安装rayshader包
install.packages("remote")
remotes::install_github("tylermorganwall/rayshader")
library(rayshader)
library(ggplot2)# 查看数据格式
head(diamonds)# 绘制二维密度图
gg = ggplot(diamonds, aes(x, depth)) +stat_density_2d(aes(fill = stat(nlevel)), #绘制密度等高线图geom = "polygon",n = 100,bins = 10, contour = TRUE) +facet_wrap(clarity~.) +    # 按clarity分类scale_fill_viridis_c(option = "A") # 将map颜色设置为“岩浆”色,简称为“A”,共有“A”,“B”,“C”,“D”和“E”五种;gg # 绘制2D图# 转成3D图,只需要plot_gg函数即可
plot_gg(gg,multicore=TRUE,width=5,height=5,scale=250)

打开后,可以像任何其他光线图一样操作绘图 - 可以调用render_camera()以编程方式更改摄像机位置,render_snapshot()可以保存或输出当前视图,甚至可以使用render_depth()来渲染光滑深度场效应。还可以更改甚至删除光源,并将任何参数传递给plot_gg(),绘制为plot_3d()

# 如果缺失sf包,建议先安装
library(sf)nc = st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) #加载包自带的数据
gg_nc = ggplot(nc) +  # 加载North Carolina地图geom_sf(aes(fill = AREA)) +  # 绘制地理数据模型,sf对象,全称Simple featurescale_fill_viridis("Area") +   # 按区域上色ggtitle("Area of counties in North Carolina") +    # 绘制题目theme_bw()plot_gg(gg_nc, multicore = TRUE, width = 6 ,height=2.7, fov = 70) #加载图形
render_depth(focallength=100,focus=0.72)

# 随机取三组数字,并且对其进行合并,两列,一列X,一列Y
a = data.frame(x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
b = data.frame(x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
c = data.frame(x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
data = rbind(a,b,c)
class(data)   #其实如果我们有相同类型的数据,也可以仿照该组织方式进行合并;# Lines
pp = ggplot(data, aes(x=x, y=y)) +geom_hex(bins = 20, size = 0.5, color = "black") + # 绘制六边形图scale_fill_viridis_c(option = "C")
plot_gg(pp, width = 4, height = 4, scale = 300, multicore = TRUE)# No lines
pp_nolines = ggplot(data, aes(x=x, y=y)) +geom_hex(bins = 20, size = 0) +scale_fill_viridis_c(option = "C")
plot_gg(pp_nolines, width = 4, height = 4, scale = 300, multicore = TRUE)

# 该数据摘自1974年“美国汽车趋势”杂志,包括32种汽车(1973-74型号)的燃油消耗和10个汽车设计和性能方面。#该数据是我们常见的R中的模拟数据
head(mtcars)mtcars_gg = ggplot(mtcars) +geom_point(aes(x=mpg,color=cyl,y=disp),size=2) +scale_color_continuous(limits=c(0,8)) +ggtitle("mtcars: Displacement vs mpg vs # of cylinders") +theme(title = element_text(size=8),text = element_text(size=12))plot_gg(mtcars_gg, height=3, width=3.5, multicore=TRUE, pointcontract = 0.7, soliddepth=-200)

准备开始了吗?

点击链接 https://github.com/tylermorganwall/rayshader!该网站包含所有rayhader功能的文档和示例,可以在Github页面上找到实际的存储库。就让你静静的看我有多美!

想把其它图也用3D展示,可以拿下面的ggplot2系列绘图做例子。

  • ggplot2高效实用指南 (可视化脚本、工具、套路、配色)

  • ggplot2学习笔记之图形排列

  • 12个ggplot2扩展包帮你实现更强大的可视化

作者:张虎 协和

你可能还想看

  • 文章用图的修改和排版 (1)

  • 文章用图的修改和排版 (2)

  • 简单强大的在线绘图

  • 简单强大的在线绘图-升级版

  • 简单强大的在线绘图-第3版

  • 论文图表基本规范

  • 学术图表的基本配色方法

  • 数据可视化基本套路总结

往期精品(点击图片直达文字对应教程)

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

一个震撼的交互型3D可视化R包 - 可直接转ggplot2图为3D相关推荐

  1. Cicero:一个单细胞染色质可及性实验可视化R包

    本文可在http://xuzhougeng.top/免费阅读原文 Cicero是一个单细胞染色质可及性实验可视化R包.Cicero的主要功能就是使用单细胞染色质可及性数据通过分析共开放去预测基因组上顺 ...

  2. 多组学分析及可视化R包

    文章来源:https://www.cnblogs.com/jessepeng/p/12597907.html 1. mixOmics 应该是在多组学领域知名度最高的一个R包,有专门的团队,做了十余年了 ...

  3. karyoploteR: 基因组数据可视化 R 包

    karyoploteR,是一个适用于所有基因组数据(any data on any genome)非圆环布局(non-circular layouts)的可视化 R/Bioconductor 包.开发 ...

  4. SNP连锁不平衡图(LD)可视化R包LDheatmap的使用

    理解SNPs之间的联系或连锁不平衡(LD)模式对于单体型的选择具有重要作用,然而,对于密集的SNP图谱,随着区域内SNPs数量的增加,很难直接从复杂的VCF文件来看出SNPs间的连锁不平衡关系.LDh ...

  5. pm3包1.4版本发布----一个用于3组倾向性评分的R包

    目前,本人写的第二个R包pm3包的1.4版本已经正式在CRAN上线,用于3组倾向评分匹配,只能3组不能多也不能少. 可以使用以下代码安装 install.packages("pm3" ...

  6. pm3包1.8版本发布----一个用于3组倾向性评分的R包

    目前,本人写的第二个R包pm3包的1.8版本已经正式在CRAN上线,用于3组倾向评分匹配,只能3组不能多也不能少. 可以使用以下代码安装 install.packages("pm3" ...

  7. R包ComplexHeatmap绘制个性化热图

    使用ComplexHeatmap包绘制个性化热图 作者:刘梦瑶 诺禾致源 微生物信息 审稿:刘永鑫 中国科学院遗传与发育生物学研究所 ComplexHeatmap包由顾祖光博士创建,是一个非常全面的绘 ...

  8. 能通过一张照片(2D)得到3D的模型吗?AI自动识别户型图生成3D场景方案

    参考文献: 基于形状与边缘特征的户型图识别研究_江州.caj 面向自动家装生成的户型图识别方法研究_黄文.caj 基于深度学习的青年公寓户型自动生成研究_杨柳.caj 基于结构构件识别的户型图三维重建 ...

  9. 基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)...

    国内高层建筑不断兴建,它的特点是高度高.层数多.体量大.面积可达几万平方米到几十万平方米.这些建筑都是一个个庞然大物,高高的耸立在地面上,这是它的外观,而随之带来的内部的建筑设备也是大量的.为了提高设 ...

最新文章

  1. Docker部署ELK 日志归集
  2. Scala多线程:使用线程池Executors提交Runnable任务代码示例
  3. 盛语小智教育机器人是骗人的_武清区人民检察院未检工作室,开展普法机器人进校园宣讲活动...
  4. 搭建MySQL+MHA服务易错位置
  5. 构建程序员快捷代码键盘
  6. L - All in All(子序列)
  7. php framework interop group,PHP超全局变量 - 山鹰sniper的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. lol鲁大师帧数测试软件,lol配置检测
  9. 南京邮电大学812自动控制原理高分经验
  10. Oracle P6培训系列:06创建项目日历
  11. 用计算机算微积分,AP微积分AB BC 计算器使用要求
  12. 虚拟机处理器核数与物理cpu的关系
  13. CESM优化——Intel编译器编译安装NetCDF库(C+Fortran)
  14. 含有非期望产出的ZSG-DEA模型
  15. Golang创建DLL
  16. springBoot使用poi导出Excel
  17. 猫眼 — 破解数字反爬获取实时票房
  18. java时间戳 时间格式转换与时差
  19. 命令行cmd如何切换目录
  20. RAM和ROM是什么?RAM和ROM其实都是内存

热门文章

  1. spring 多数据源- 原理
  2. 【Git】Git兼容GitHub和Gitee的问题与对策
  3. Shell 的简单常用语法
  4. 『原创』+『参考』亲手实验:使用C#在PPC中播放声音
  5. Qt 事件处理机制 (上篇)
  6. 【洛谷 P3304】[SDOI2013]直径(树的直径)
  7. [转载]带你玩转Visual Studio——带你高效开发
  8. 中文版microbit:TurnipBit显示动态滚动字符教程实例
  9. MySql 常见错误代码大全
  10. 优秀程序员的开发效率是普通程序员的 10 倍,那么如何提升呢?