教你将ggplot2的2D图像变为3D

作者: R语言与SPSS学习笔记 | 来源:发表于2021-07-03 07:34 被阅读0次

最近无意间发现了一个包:rayshader,这个包非常有趣,跟大家一起分享。该包的主要功能就是将ggplot2画出来的2D图像变为3D图像。废话就不多说了,直接做出来看看效果吧!

1. 安装并加载包

install.packages("rayshader")
library(ggplot2)
library(rayshader)
library(viridis)#颜色包

2. 图1 (2D):

  mtplot = ggplot(mtcars) + 
geom_point(aes(x=mpg,y=disp,color=cyl)) + #画点
scale_color_continuous(limits=c(0,8))+#设置颜色尺度从0到8
ggtitle("mtcars: Displacement vs mpg vs # of cylinders") +#添加题目
theme(title = element_text(size=8),#设置题目字体大小
text = element_text(size=12))#设置图片中字体的大小

3. 图1 (3D):

 plot_gg(mtplot, width=3.5,  sunangle=225)
render_camera(zoom=1,#图形放大缩小倍数
theta=30,#旋转角度
phi=30)#方位角, 其实render_camera类似于改摄像机位置
render_snapshot()#保存或输出当前视图
render_snapshot(clear = TRUE)#清除生成的图片

……耐心等待

4. 图2 (2D):

ggdiamonds = ggplot(diamonds, aes(x, depth)) +
stat_density_2d(aes(fill = stat(nlevel)),
geom = "polygon", n = 200, bins = 50,contour = TRUE) + #绘制2D密度图
facet_wrap(clarity~.) + #绘制clarity变量的分组密度图
scale_fill_viridis_c(option = "C")#使用Viridis颜色梯度(对色盲友好)

5. 图2 (3D):

 plot_gg(ggdiamonds,multicore =TRUE,#表示如果光线跟踪为“真”,则将使用多种颜色来计算阴影矩阵
width=5,#宽度
height=5,#高度
scale=250,#3D图的高度,默认是150,设置得越高图形越高
windowsize=c(1400,866),
zoom = 0.55, phi = 30)
render_snapshot()#保存或输出当前视图
render_snapshot(clear = TRUE)

6. 图3 (2D):

  mtplot_density = ggplot(mtcars) + 
stat_density_2d(aes(x=mpg,y=disp, fill=..density..), geom = "raster", contour = FALSE) +
scale_x_continuous(expand=c(0,0)) +#x的位置尺度
scale_y_continuous(expand=c(0,0)) +#y的位置尺度
scale_fill_gradient(low="pink", high="red")#设置渐变色
mtplot_density

7. 图3 (3D):

  plot_gg(mtplot_density, width = 4,zoom = 0.60, theta = -45, phi = 30, 
windowsize = c(1400,866))
render_snapshot()

8. 图3按照cyl分面绘制 (2D):

  mtplot_density_facet = mtplot_density + facet_wrap(~cyl)

9. 图3按照cyl分面绘制 (3D):

 plot_gg(mtplot_density_facet)
render_snapshot(clear = TRUE)

今天的内容介绍到这,欢迎关注我们的公众号:R语言与SPSS学习笔记

分享实用的SPSS及R处理数据、分析数据及做图的使用技巧

相关文章

  • 教你将ggplot2的2D图像变为3D

    最近无意间发现了一个包:rayshader,这个包非常有趣,跟大家一起分享。该包的主要功能就是将ggplot2画出...

  • 小孔成像模型

    通过相机拍摄图像可以将3D世界投影到2D图像当中,因此,我们可以把相机模型看作是一个3D空间到2D空间的映射。下面...

  • 3d图形制作软件Adobe Dimension CC 2019(

    dimension cc是一款专业的3d图形制作软件,用户通过dimension中文版能够将普通的2d图像转化为3...

  • Adobe Dimension CC 2019(dn cc201

    dimension cc是一款专业的3d图形制作软件,用户通过dimension中文版能够将普通的2d图像转化为3...

  • Adobe Dimension CC 2019(dn cc201

    dimension cc是一款专业的3d图形制作软件,用户通过dimension中文版能够将普通的2d图像转化为3...

  • UnityShader之固定管线着色器(二)

    前言 上一篇我们讲解了关于图像学的一点基础知识,我们了解到GPU是如何将3D场景及3D游戏对象显示到2D屏幕上。本...

  • python图片-8-图像二值化

    将图像二值化,像素值大于128的变为1,否则变为0

  • OpenGL投影矩阵

    概述 电脑显示器是2D平面,一个3D物体通过OpenGL渲染投影到2D显示器平面形成图像,GL_PROJECTIO...

  • 使用Three.js的LatheGeometry画一个胶囊

    核心是使用LatheGeometry将一个2D的线扫描成3D物体

  • 3D

    照相机将三维空间的物体转换为2D的相片。在3D开发中,利用照相机原理来进行2D和3D的相互转换。在3D开发中,相机...

网友评论

    本文标题:教你将ggplot2的2D图像变为3D

    本文链接:https://www.haomeiwen.com/subject/orluultx.html