用ggplot2画3D

栏目: R语言 · 发布时间: 6年前

内容简介:在《我们首先定义一个转换函数:然后我们使用一个3D兔子的坐标来测试一下,当然一般画3D的程序都支持你用鼠标交互,比如旋转角度什么的,但我们用

在《 扪心自问,meme几何? 》一文中,我画了一只兔子,今天给大家演示一下画一只3D版本的兔子,我们知道 ggplot2 不支持3D,只能画2D的图,但3D其实只是视觉上的,显示在你屏幕上的,同样只是2D。所以我们要做的,就是把3D的坐标转换成2D,然后画出2D的图片来,而这2D看上去有3D的效果。

我们首先定义一个转换函数:

trans_3d_2d <- function(data, theta=135, phi=60) {
	pmat <- plot3D::perspbox(z=diag(2), plot=F, theta=theta, phi=phi)
	
	data <- as.data.frame(data)
   XY <- plot3D::trans3D(
       x = data$x,
       y = data$y,
       z = data$z,
       pmat = pmat) %>%
     data.frame()

   data$x <- XY$x
   data$y <- XY$y

	return(data[, c('x', 'y')])
}

然后我们使用一个3D兔子的坐标来测试一下,当然一般画3D的程序都支持你用鼠标交互,比如旋转角度什么的,但我们用 ggplot2 就不可以,我们能做到的,就是在调用上面的转换函数时,指定不同的角度而已。

require(onion)
data(bunny)
d <- trans_3d_2d(bunny)

require(ggplot2)
ggplot(d, aes(x, y, color=x)) + geom_point(alpha=.2)  + 
	coord_flip() + 
	theme(legend.position="none") + 
	scale_y_reverse()

用ggplot2画3D


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

自媒体之道

自媒体之道

吴晨光 / 中国人民大学出版社有限公司 / 2018-7-31 / CNY 49.80

内容简介: 《自媒体之道》为你解决四个问题: 1. 一篇10万+的刷屏文章是怎么写出来的? 2. 一支10万+的爆款视频是怎么做出来的? 3. 一个100万+粉丝的大号是怎么运营的? 4. 神秘的人工智能(AI)和备受争议的算法是怎么运行的? 这部超过30万字的著作,集纳了中国顶尖自媒体人和平台运营者3年的实操经验。全书13章,详解案例150+,提炼“锦囊秒句”......一起来看看 《自媒体之道》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器