我正在尝试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()
笨拙,因为x
andy
中的值render_label
不是经度和纬度值。我只是尝试了不同的数字来计算出正确的数字。
尽管如此,我得到了我想要的。