专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
涵江时讯  ·  早安!涵江! ·  4 天前  
涵江时讯  ·  早安!涵江! ·  4 天前  
中国市场监管报  ·  “迷你厨房”的安全隐患 ·  6 天前  
前端早读课  ·  【早阅】2025 年的 React + ... ·  6 天前  
光伏资讯  ·  “澡堂+光伏”的完美应用! ·  6 天前  
光伏资讯  ·  “澡堂+光伏”的完美应用! ·  6 天前  
前端早读课  ·  【早阅】2025 年 CSS 愿望清单 ·  1 周前  
51好读  ›  专栏  ›  EasyCharts

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

EasyCharts  · 公众号  · 前端  · 2019-08-20 21:45

正文

作者:张虎 协和,编辑:陈同 生信宝典

虽然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 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,一列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系列绘图做例子。

大家都在看

配图版:标准中国地图的绘制

R语言ggplot2地理信息可视化(上)

R语言ggplot2地理信息可视化(下)

R 地理空间数据可视化:二维插值处理(1)

R 地理空间数据可视化:二维插值处理(2)

geofacet: 按地理位置分面的数据可视化

优雅的操纵json数据地图素材——打破地理信息可视化的孤岛


书籍推荐


《R数据可视化之美:专业图表绘制指南》以 R 语言为背景,通俗易懂地讲述了大量数据可视化领域的专业知识,从图形语法、色彩原理、视觉通道到各类图表的应用实践。

书籍配套开源R代码地址

https://github.com/EasyChart/Beautiful-Visualization-with-R



如需联系EasyCharts团队

请加微信:EasyCharts


【书籍推荐】《R语言数据可视化之美》

【书籍推荐】《Excel 数据之美--科学图表与商业图表的绘制》

【手册获取】  国内首款-数据可视化参考手册:专业绘图必备

【必备插件】  EasyCharts -- Excel图表插件

【网易云课堂】  Excel 商业图表修炼秘笈之基础篇



推荐文章
涵江时讯  ·  早安!涵江!
4 天前
涵江时讯  ·  早安!涵江!
4 天前
中国市场监管报  ·  “迷你厨房”的安全隐患
6 天前
前端早读课  ·  【早阅】2025 年的 React + AI 技术栈
6 天前
光伏资讯  ·  “澡堂+光伏”的完美应用!
6 天前
光伏资讯  ·  “澡堂+光伏”的完美应用!
6 天前
前端早读课  ·  【早阅】2025 年 CSS 愿望清单
1 周前
底线思维  ·  澳大利亚拒绝对接“一带一路”
7 年前
静塾文化  ·  优秀的孩子,都不合群
7 年前
诗词天地  ·  诗词丨飞花轻似梦,丝雨细如愁
7 年前