我正在尝试基于美国地图创建一个 stl 文件,该地图具有不同的位置,如点,基于数据值的不同高度。
我可以相对容易地创建点部分。
library(ggplot2)
library(data.table)
library(rayshader)
myPoints <- structure(list(N = c(7.34e+20, 1e+18, 1.471e+21, 1.35e+21, 2.096e+21
), latitude = c(35.060137, 42.151816, 34.420986, 39.713209, 32.445652
), longitude = c(-93.133718, -71.77203, -92.530547, -75.661478,
-93.739031)), row.names = c(NA, -5L),
class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x0000000006431ef0>)
gg1 <- ggplot() +
geom_map(data = us, map = us, aes(x = long, y = lat, map_id = region),
fill = "#ffffff", color = "#ffffff", size = 0.15) +
geom_point(data = test, aes(x = longitude, y = latitude, color = N), inherit.aes = F) +
theme(legend.position = "none")
gg1
plot_gg(gg1, multicore = TRUE, width = 5, height = 5, scale = 250, windowsize = c(1400,866),
zoom = 0.55, phi = 30)
但是,当我使用光线着色器保存到 stl 时,美国部分是平坦的。
换句话说,它基本上是一个带有一些尖刺的平坦表面。所以我想我会尝试在此处添加一些州级数据,这将为美国部分增加一些海拔。
但发生的情况是,美国部分的升高抹去了点数据。
us <- map_data("state")
arr <- USArrests %>%
rownames_to_column("region") %>%
mutate(region = tolower(region))
arr$Murder <- 0.01
gg2 <- ggplot() +
geom_map(data = us, map = us, aes(x = long, y = lat, map_id = region),
fill = "#ffffff", color = "#ffffff", size = 0.15) +
geom_map(data = arr, map = us, aes(fill = Murder, map_id = region), color = "#ffffff") +
geom_point(data = test, aes(x = longitude, y = latitude, color = N), inherit.aes = F) +
theme(legend.position = "none")
gg2
plot_gg(gg2, multicore = TRUE, width = 5, height = 5, scale = 250, windowsize = c(1400,866),
zoom = 0.55, phi = 30)
最终我想要的是美国部分略微升高,然后我的点数据高于此。我尝试将点数加倍以使其变大等,但我无法得到它。
我想知道是否需要放弃rayshader ggplot函数,并尝试使用矩阵,但我仍在学习使用空间数据我不知道将美国地图数据转换为矩阵并正确标记的好方法所述矩阵上的点。
我愿意接受任何和所有建议。