我希望rgl在我的.Rnw文档中包含动画图表knitr.这是我的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 = c(4, 4, 0.1, 0.1), cex.lab = 0.95, cex.axis = 0.9, mgp = c(2, 0.7, 0), tcl = -0.3)
} …Run Code Online (Sandbox Code Playgroud) 我希望有经验的人可以帮助我们如何从xyz数据中准备形状文件.虽然没有提供创建形状文件的前面步骤,但可以在这里看到彗星Churyumov-Gerasimenko 的精心准备的数据集的一个很好的例子.
我试图更好地理解如何将曲面应用于给定的XYZ坐标集.使用笛卡尔坐标是直接使用R包"rgl",但是环绕的形状看起来更难.我找到了R包geometry,它提供了QHULL函数的接口.我尝试使用它来计算Delaunay三角剖面,然后我可以用它绘制rgl.我无法弄清楚与该功能相关的一些选项delaunayn,可能控制这些方面的最大距离.我希望这里有人可能对xyz数据改进表面结构有一些想法.
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")
Run Code Online (Sandbox Code Playgroud)

这个答案让我相信Qhull的R实现可能存在问题.此外,我现在尝试了各种设置(例如delaunayn(bunny, options="Qt")),效果甚微.Qhull选项在此处列出
这是一个额外的(更简单的)球体示例.即使在这里,小平面的计算并不总能找到最近的相邻顶点(如果你旋转球,你会看到一些小平面穿过内部).
library(rgl)
library(geometry)
set.seed(1)
n <- 10
rho <- 1
theta <- seq(0, 2*pi,, n) # azimuthal coordinate running from 0 to 2*pi
phi <- seq(0, pi,, n) # polar …Run Code Online (Sandbox Code Playgroud) 我在这里看到了这个问题:使用Mac OS X加载rgl包时出错,但没有提到安装错误,这是我的情况.我无法rgl使用以下命令安装软件包R:
source("http://bioconductor.org/biocLite.R")
biocLite("rgl")
Run Code Online (Sandbox Code Playgroud)
显示以下错误:
source("http://bioconductor.org/biocLite.R")
biocLite("rgl")
Run Code Online (Sandbox Code Playgroud)
我检查了这个地址/Library/Frameworks/R.framework/Versions/3.2/Resources/library,没有rgl文件夹,所以我不能删除aglrgl.so(或rgl.so),这是上述问题的答案.你能帮我解决这个安装问题吗?谢谢.
使用knitr它可以rgl在Rmarkdown源文件的html文档中嵌入3D图形:
```{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))
```
Run Code Online (Sandbox Code Playgroud)
但是html文档中的3D图形不是交互式的.是否有可能获得交互式3D图形?包的writeWebGL()功能rgl创建一个带有交互式3D图形的html文件,有没有办法直接包含这个HTML代码与Rmarkdown?否则如何手动包含此HTML代码?
这是一个今天不起作用的示例(3D图形不会出现在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')
```
```{r}
sessionInfo()
```
Run Code Online (Sandbox Code Playgroud)
我已经使用不同版本的针织与RStudio"编织"按钮,该文件在两种情况下rgl与knitr包(但这肯定是由于rgl因为与输出出现问题包writeWebGL功能):
R-2.15.2的旧版本:源文件和html呈现.并使用rgl_0.93.928 生成html文件 …
想象我有一个3列矩阵
x,y,z,其中z是x和y的函数.
我知道如何绘制这些点的"散点图"
plot3d(x,y,z)
但是,如果我想要一个表面,我必须使用其他命令,如surface3d问题是它不接受与plot3d相同的输入它似乎需要一个矩阵与
(nº elements of z) = (n of elements of x) * (n of elements of x)
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个矩阵?我尝试使用命令interp,就像我需要使用等高线图时一样.
如何在不计算此矩阵的情况下直接从x,y,z绘制曲面?如果我的分数太多,那么这个矩阵就太大了.
干杯
我有一个使用RGL的3D图.我想用颜色制作相同的图来突出显示某些变量的分布.要做到这一点,我想有相同的情节,我如何找到和设置情节的方向?
一旦我做了一个初步的情节,我移动它找到一个很好的显示角度,我想保存这个角度,并将其纳入未来的绘图脚本.有人建议如何做到这一点?
library(rgl)
plot3d(iris)
#play with the plot to find a good angle
#save the angle for future plots
Run Code Online (Sandbox Code Playgroud) 在R统计软件包的世界中,rgl允许我生成可以用鼠标旋转的3d图.有没有办法可以以便携式格式导出这些图表,将它们加载到网络浏览器或其他第三方工具中并在那里旋转它们?我对网络浏览器解决方案特别感兴趣,因为这将允许我在内部维基上共享图表.
如果rgl不允许这样做,是否有其他库或策略可以让我完成此操作?
我使用rgl.surface()创建了一个3d地图,主要是按照Shane在这篇文章中的回答.使用我自己的数据,我得到了这张地图

在这张表面地图的顶部,我想添加一张植被密度图,这样我就可以获得这样的东西(用Surfer软件获得):

是否可以使用rgl执行此操作,或者对于r中的任何其他包或者是唯一的解决方案,有两个地图,如Shane的答案?
谢谢.
编辑:
根据@ gsk3的请求,以下是此地图的代码:
library(rgl)
# Read the z (i.e. elevation) dimension from file
z1 = matrix(scan("myfile.txt"),nrow=256, ncol=256, byrow=TRUE)
#create / open x y (i.e. easting and northing coordinates) dimensions
y=8*(1:ncol(z)) # Each point is 8 m^2
x=8*(1:nrow(z))
# See https://stackoverflow.com/questions/1896419/plotting-a-3d-surface-plot-with-contour-map-overlay-using-r for details of code below
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Mac OS X(Lion 10.7.3)下为R(2.14.2)安装rgl软件包(0.92.858).当我尝试加载它(库(rgl))时,我收到以下错误:
Error : .onLoad failed in loadNamespace() for 'rgl', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/2.14/Resources/library/rgl/libs/x86_64/aglrgl.so':
dlopen(/Library/Frameworks/R.framework/Versions/2.14/Resources/library/rgl/libs/x86_64/aglrgl.so, 6): Symbol not found: __ZN3gui13OSXGUIFactory12hasEventLoopEv
Referenced from: /Library/Frameworks/R.framework/Versions/2.14/Resources/library/rgl/libs/x86_64/aglrgl.so
Expected in: dynamic lookup
Run Code Online (Sandbox Code Playgroud)
我有一台带有挪威键盘的Mac.也许这与这个问题有关?但是,我得到了同样的错误,即使我将语言改为美国有没有人遇到过类似的问题?有什么办法解决它吗?
虽然该view3d(theta, phi,...)功能可用于在拍摄3d图表/对象的快照时将观察点旋转到合适的位置,但很难猜测哪个θ和phi值是好的.
一旦显示图表,我们就可以交互式旋转它.但是,无论如何在手动旋转后找出图的theta和phi参数,这样我们就可以以编程方式使用它(即在创建应该具有相同视点的许多图时)?