教你将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

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