英文:
Add color on height 3D map with Rayshader in R
问题
我想使用rayshader制作3D地图。我看过这个网站https://www.tylermw.com/3d-ggplots-with-rayshader/,并尝试使用我的数据运行代码。在这个网站上,高度图是黑色的,但在我的输出中不是。有没有办法获得像那样的结果?谢谢。。
我使用了这段代码。
map <- sf::st_read('map/map.shp', quiet = TRUE)
gg = ggplot(map) +
geom_sf(aes(fill = AREA), linewidth = 0.7, colour = 'black', inherit.aes = FALSE) +
scale_fill_viridis('面积', na.value = 'white') +
theme(axis.line = element_blank(), axis.title = element_blank(),
axis.ticks = element_blank(), axis.text = element_blank())
plot_gg(gg, multicore = TRUE, width = 6, height = 2.7, fov = 70, offset_edges = TRUE)
英文:
I want to make 3D map with rayshader. I have seen this web https://www.tylermw.com/3d-ggplots-with-rayshader/ and try the code with my data. In this web, height map has black color but not on my output. Are there any way to get result like that? Thanks..
I use this code.
map <- sf::st_read('map/map.shp', quiet = TRUE)
gg = ggplot(map) +
geom_sf(aes(fill =AREA),linewidth=0.7,colour='black',inherit.aes=FALSE) +
scale_fill_viridis('Area',na.value = 'white')+
theme(axis.line = element_blank(),axis.title = element_blank(),
axis.ticks = element_blank(), axis.text = element_blank())
plot_gg(gg, multicore = TRUE, width = 6 ,height=2.7, fov = 70,offset_edges = TRUE)
答案1
得分: 3
显然,你正在使用新版本的 ggplot2 3.4.0。我认为你的问题不是关于添加颜色,而更可能与新版本的 ggplot2 有关,特别是新的 linewidth()。你的颜色仍然是正确的,但更细。这已经在文档中记录了 https://ggplot2.tidyverse.org/news/index.html。
我也遇到了一些关于 ggplot2 3.4.0 和 rayshader 的奇怪行为。如下图所示,我的带有 ggplot2 3.4.0 的 3D 图变得难以辨认。
使用 ggplot 3.4.0 的 rayshader
到目前为止,我唯一的解决方案是切换回 ggplot2 3.3.6。
library(remotes)
install_version("ggplot2", version = "3.3.6", repos = "http://cran.us.r-project.org")
你可能想尝试一下,至少作为一个临时解决方案。
使用 ggplot 3.3.6 的 rayshader
英文:
Obviously, you are using new version of ggplot2 3.4.0. I think your issue is not about adding color but more likely to do with newer version of ggplot2, specifically new linewidth(). Your color is still correct as black but thinner. This has been documented <https://ggplot2.tidyverse.org/news/index.html>.
I have also experienced some strange behaviors with ggplot2 3.4.0 and rayshader. As you can see in the following graph, my 3D graph with ggplot2 3.4.0 became unrecognizable.
rayshader with ggplot 3.4.0
The only solution I have so far is to switch back to ggplot2 3.3.6.
library(remotes)
install_version("ggplot2", version = "3.3.6", repos = "http://cran.us.r-project.org")
You may want to try it, as least as a temporary solution.
rayshader with ggplot 3.3.6
答案2
得分: 0
你确定你正在使用当前版本的软件包吗?如果是的话,可能是一些棘手的环境问题(我在Linux上运行R)。
当我运行你的代码时,我得到了这个结果 - 我将边框颜色从黑色改为红色以夸张效果;除此之外,这是你的代码,它似乎表现正常。
library(sf)
library(ggplot2)
library(rayshader)
map <- st_read(system.file("shape/nc.shp", package="sf")) # to make reproducible
gg <- ggplot(map) +
geom_sf(aes(fill = AREA),
linewidth=0.7,
colour='red', # changed from black to red to exaggerate...
inherit.aes=FALSE) +
viridis::scale_fill_viridis('Area',na.value = 'white')+
theme(axis.line = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text = element_blank())
plot_gg(gg,
multicore = TRUE,
width = 6,
height=2.7,
fov = 70,
offset_edges = TRUE)
render_snapshot(filename = "nc.png")
英文:
Are you absolutely positively certain you are using the current versions of packages? If yes then it could be some tricky environmental issue (I run my R on Linux).
When I run your code I get this - I changed the edges color from black to red to exaggerate the effect; otherwise it is your code, and it seems to behave itself.
library(sf)
library(ggplot2)
library(rayshader)
map <- st_read(system.file("shape/nc.shp", package="sf")) # to make reproducible
gg <- ggplot(map) +
geom_sf(aes(fill = AREA),
linewidth=0.7,
colour='red', # changed from black to red to exaggerate...
inherit.aes=FALSE) +
viridis::scale_fill_viridis('Area',na.value = 'white')+
theme(axis.line = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text = element_blank())
plot_gg(gg,
multicore = TRUE,
width = 6,
height=2.7,
fov = 70,
offset_edges = TRUE)
render_snapshot(filename = "nc.png")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。






评论