gpt4 book ai didi

r - 向 ggmap 添加易于阅读的比例尺(使用 ggsn 包?)

转载 作者:行者123 更新时间:2023-12-04 15:55:50 25 4
gpt4 key购买 nike

我正在努力在我的一些 map 中插入比例尺。我使用 ggmaps,目前正在使用 ggsn 包插入比例尺。然而,这个比例尺在我正在使用的 map 类型上非常难以阅读(见下图)。我想 (a) 找到一种方法使其更易于阅读,(b) 将比例尺置于 map 边界之外,或者 (c) 使用不同的包以更轻松地进行自定义。

基本上,我的代码看起来像这样。这个例子应该很容易重现。

map <- get_map(location = c(146, 15), zoom = 8,
maptype = “satellite”, source = "google")

Map <- ggmap(map)

Map + ggsn::scalebar(x.min = 144.5, x.max = 147.5,
y.min = 13.5, y.max = 16.5,
dist = 50, dd2km = TRUE, model = 'WGS84')

并生成如下图,其中右下角的比例尺很难看清。

ggmap with scalebar

有什么想法吗?非常感谢!

最佳答案

Github 上的 scalebar 开发版有新的参数,st.colorbox.fill,可以更好地自定义 bar .

安装该版本使用:

devtools::install_github('oswaldosantos/ggsn')

然后使用例如:

ggmap(Map) + 
my_scalebar(x.min = 144.5, x.max = 147.5,
y.min = 13.5, y.max = 16.5,
dist = 50, dd2km = TRUE, model = 'WGS84',
box.fill = c("yellow", "white), st.color = "white")

enter image description here

旧答案

我写了这个关于如何在发现新版本之前修改函数的答案。

我认为这里最好的方法是修改 scalebar 函数。

首先,您需要加载ggsn包并编辑函数:

library(ggsn)
my_scalebar <- edit(scalebar)

这应该会弹出一个编辑器。修改函数的顶部,使其看起来像这样:

function (data = NULL, location = "bottomright", dist, height = 0.02, 
st.dist = 0.02, st.bottom = TRUE, st.size = 5, dd2km = NULL,
model, x.min, x.max, y.min, y.max, anchor = NULL, facet.var = NULL,
facet.lev = NULL, box2_fill = "yellow", legend_color = "white")
{
require(maptools)

我们添加了 3 件事:

  • 参数 box2_fill 默认值 = "yellow"
  • 参数 legend_color 默认值 = "white"
  • 需要 maptools 因为该函数使用该包中的 gcDestination()

接下来,查找以 gg.box2 开头的行并将其更改为使用 box2_fill 的值:

  gg.box2 <- geom_polygon(data = box2, aes(x, y), fill = box2_fill, 
color = "black")

然后,编辑函数底部附近的部分以使用 legend_color 的值:

else {
gg.legend <- annotate("text", label = paste0(legend[,
"text"], "km"), x = x.st.pos, y = st.dist, size = st.size,
color = legend_color)
}

保存将关闭编辑器并将新函数 my_scalebar 保存到您的工作空间。

现在您可以使用新功能了。您可以为新参数 box2_fill =legend_color = 提供值,或者只尝试默认值:

ggmap(Map) + 
my_scalebar(x.min = 144.5, x.max = 147.5,
y.min = 13.5, y.max = 16.5,
dist = 50, dd2km = TRUE, model = 'WGS84')

如果您认为您的编辑有用,您可以使用拉取请求将它们建议给包开发人员 at Github .注意:看起来开发人员已经开始解决这个问题,因为 scalebar 的 Github 版本有新的 box.fillst.color参数。

关于r - 向 ggmap 添加易于阅读的比例尺(使用 ggsn 包?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com