1

我正在尝试ggplot使用 2D 图形在 3D 图形中标记一个点rayshader。这是我尝试过的render_label。我曾经save_height_matrix = TRUE得到高度矩阵。该图显示了标签,但在错误的位置,它应该在最高点的顶部。任何建议,将不胜感激。

library(ggplot2)
library(rayshader)
p <- ggplot(mtcars) + 
  geom_point(aes(x=mpg, y=disp, color=cyl)) + 
  scale_color_continuous(limits=c(0,8)) 

filename_movie = tempfile()
ht_matrix <- plot_gg(p, save_height_matrix = TRUE)
render_label(ht_matrix, text = "Pick this car", x = 10.4, y = 472, z = 9)
render_snapshot(filename = "fig_2.png")
rgl::rgl.close()

编辑

我制定了一个笨拙的解决方案,在这里用不同的数据集展示它:澳大利亚地图。

#remotes::install_github("wfmackey/absmapsdata")
library(absmapsdata)
library(tidyverse)
library(ggthemes)
library(rayshader)
library(sf)
state_map <- absmapsdata::state2016

p <- state_map %>% 
  ggplot() +
  geom_sf(aes(geometry = geometry, fill = areasqkm_2016)) +
  theme_map() +
  scale_fill_viridis_c(option = "C")

filename_movie = tempfile()
ht_mx <- plot_gg(p,
                 multicore=TRUE,
                 width=5,
                 height=5,
                 scale = 350,
                 windowsize = c(1000, 1000),
                 phi = 30,
                 save_height_matrix = TRUE,
                 theta = 0
)
render_label(ht_mx, text = "Northern Territory", x = 760, y = 600, z =450)
render_label(ht_mx, text = "Queensland", x = 1000, y = 680, z =450)
render_snapshot(filename = "fig_1")
rgl::rgl.close()

笨拙,因为xandy中的值render_label不是经度和纬度值。我只是尝试了不同的数字来计算出正确的数字。
尽管如此,我得到了我想要的。

在此处输入图像描述

4

0 回答 0