Tag: rgl

包括一个与knitr交互的3Dgraphics

使用knitr ,可以在Rmarkdown源文件的html文档中embedded一个rgl 3Dgraphics: “`{r setup} library(rgl) knit_hooks$set(rgl = hook_rgl) x <- sort(rnorm(1000)) y <- rnorm(1000) z <- rnorm(1000) + atan2(x,y) “` “`{r, rgl=TRUE} plot3d(x, y, z, col=rainbow(1000)) “` 但是3Dgraphics在html文档中不是交互式的。 是否有可能获得交互式3Dgraphics? rgl包的writeWebGL()函数创build一个交互式3Dgraphics的html文件,有没有办法直接包含这个html代码与Rmarkdown? 否则,如何手动包含这个HTML代码? 2013年6月24日更新 以下是一个今天无法使用的示例(3Dgraphics不会显示在Chrome中): Rmd源文件 ,这是非常基本的: “`{r setup} library(rgl) knit_hooks$set(webgl = hook_webgl) “` “`{r, webgl=TRUE} M <- rbind( c(0,0,0), c(-1,4,0), c(4,9,0), c(6,3,0) ) points3d(M,col='red') “` […]

用xyz坐标绘制三维表面图

我希望有经验的人可以帮助如何从xyz数据准备形状文件。 一个精心准备的数据集的一个很好的例子可以在这里看到彗星Churyumov-Gerasimenko,虽然没有提供创build形状文件的前面的步骤。 我试图更好地理解如何将一个曲面应用到给定的一组XYZ坐标。 使用笛卡尔坐标直接与R包“rgl”,但形状环绕似乎更困难。 我find了R程序包geometry ,它提供了一个QHULL函数的接口。 我试图用这个来计算Delaunay三angular面,然后我可以在rgl中rgl 。 我无法找出与函数delaunayn相关的一些选项,可能控制这些方面计算的最大距离。 我希望这里的某个人可能会对xyz数据的表面build设有所改进。 使用“斯坦福兔子”数据集的示例: library(onion) library(rgl) library(geometry) data(bunny) #XYZ point plot open3d() points3d(bunny, col=8, size=0.1) #rgl.snapshot("3d_bunny_points.png") #Facets following Delaunay triangulation tc.bunny <- delaunayn(bunny) open3d() tetramesh(tc.bunny, bunny, alpha=0.25, col=8) #rgl.snapshot("3d_bunny_facets.png") 这个答案让我相信Qhu的R实现可能会有问题。 另外,我现在已经尝试了各种设置(例如delaunayn(bunny, options="Qt") ),效果不大。 在这里列出了 Qhull选项 编辑: 这是一个额外的(更简单的)球体的例子。 即使在这里,面的计算并不总是find最近的相邻顶点(如果你旋转球,你会看到一些穿过内部的方面)。 library(rgl) library(geometry) set.seed(1) n <- 10 rho <- 1 theta […]

与knitr的生气蓬勃的rgl图表

我想通过knitr在我的.Rnw文件中joinrglgraphics。 这是我的MWE: \documentclass{article} << label = setup, include = FALSE>>= opts_chunk$set(fig.path = 'figure/', cache = FALSE, dev = "pdf", fig.align = 'center', fig.show = 'hold', fig.width = 3, fig.height = 3, echo = TRUE, warning = FALSE, message = FALSE, size = 'footnotesize', comment=NA, results='hold') knit_hooks$set(par = function(before, options, envir){ if (before && options$fig.show!='none') par(mar […]

R:从x,y,z绘制三维曲面

想象我有一个3列matrix x,y,z其中z是x和y的函数。 我知道如何用plot3d(x,y,z)绘制这些点的“散点图” 但是,如果我想要一个表面,而不是我必须使用其他命令如surface3d问题是,它不接受相同的input作为plot3d它似乎需要一个matrix与 (nº elements of z) = (n of elements of x) * (n of elements of x) 我怎样才能得到这个matrix? 我已经尝试了interp命令,就像我需要使用轮廓图一样。 如何直接从x,y,z绘制曲面而不计算这个matrix? 如果我的分数太多,这个matrix就太大了。 干杯