教你将ggplot2的2D图像变为3D
2021-07-03 本文已影响0人
R语言与SPSS学习笔记
最近无意间发现了一个包: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处理数据、分析数据及做图的使用技巧