Rmarkdown文件中如何使用Rayshader?

3
当我渲染Rayshader图形时,它会在我的Mac上弹出Xquartz,没有问题,但是如果我想将其包含在我的Rmarkdown文档中,它只显示代码,没有图形?我知道这是一个需要大量图形处理的渲染,但寻找任何技巧。谢谢,以下是我的代码:
---
title: "rayshader"
author: "Daniel"
date: "6/16/2020"
output: 
  html_document:
  self_contained: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```


```{r cars}
library(rayshader)

#Here, I load a map with the raster package.
loadzip = tempfile() 
download.file("https://tylermw.com/data/dem_01.tif.zip", loadzip)
localtif = raster::raster(unzip(loadzip, "dem_01.tif"))
unlink(loadzip)

#And convert it to a matrix:
elmat = raster_to_matrix(localtif)

elmat %>%
  sphere_shade(texture = "desert") %>%
  add_water(detect_water(elmat), color = "desert") %>%
  add_shadow(ray_shade(elmat, zscale = 3), 0.5) %>%
  add_shadow(ambient_shade(elmat), 0) %>%
  plot_3d(elmat, zscale = 10, fov = 0, theta = 135, zoom = 0.75, phi = 45, windowsize = c(1000, 800))
```
3个回答

4

来自软件包所有者:

要将图表嵌入到RMarkdown文档中,您需要在绘制完成后调用rgl::rglwidget()。如果您要嵌入多个图表,则还必须使用rgl::rgl.close()关闭上一个图表,然后再绘制下一个。

参考资料

对我有用。


会试一下。谢谢。 - Daniel_j_iii

1
尝试将以下内容添加到您的代码末尾:


Sys.sleep(0.2)
render_snapshot()

它已经渲染出来了,但只能作为 .Jpeg 文件,所以我无法使用鼠标移动它。不过我会继续尝试的,谢谢。 - Daniel_j_iii

0

我能够通过以下方法在R Markdown中使用RStudio生成rayshader的3D渲染交互式.HTML文件:

title: "title"
author: "author"
date: "date"
output: html_document

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

library(rayshader)
library(MetBrewer)
library(tidyverse)
library(rgl)

knitr::knit_hooks$set(webgl = hook_webgl)

嵌入3D渲染的关键在于knitr中的hook_webgl()函数。这个问题在以下讨论中有更详细的解释:

使用knitr包含交互式3D图形

其中还提到了另一种替代方案writeWebGL()函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接