首页 > 图灵资讯 > 技术篇>正文
一个震撼的交互型3D可视化R包 - 可直接转ggplot2图为3D
2023-05-08 09:06:30
一个令人震惊的交互式3D视觉R包 - rayshader
虽然3D
plot看到的比较多,但是看到这样的plotR包
,我的心还是砰的一声,再也不好看了!
关键是!!!敲黑板,这个R
包超简单!!!对于刚学R语言的同学来说,会被圈粉!
这个包的主要功能是画GGPlot22D
图像变为3D
图像,不说废话,直接上代码。
# 安装rayshader包installl安装.packages("remote")remotes::install_github("tylermorganwall/rayshader")library(rayshader)library(ggplot2)# 查看数据格式headad(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_g函数只需要plot_g函数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的全称 feature scale_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,一列Ya = 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) #事实上,如果我们有相同类型的数据,也可以模仿组织模式合并;# Linespp = 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 linespp_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
以系列绘图为例。
- gggplot2高效实用指南 (可视化脚本、工具、套路、配色)
- ggplot2学习笔记图形排列
- 12ggplot2扩展包帮助您实现更强大的可视化