R 将易读的比例尺添加到ggmap(使用ggsn包?)
我正在将比例尺插入我的一些地图中。我使用ggmaps,目前正在使用ggsn包插入比例尺。然而,在我正在使用的地图类型上,这个比例尺是非常难以阅读的(参见下面的地图)。我想(a)找到一种更容易阅读的方法,(b)让比例尺在地图边界之外,或者(c)使用一个不同的软件包,以便于定制 本质上,我的代码是这样的。该示例应易于复制R 将易读的比例尺添加到ggmap(使用ggsn包?),r,ggplot2,ggmap,R,Ggplot2,Ggmap,我正在将比例尺插入我的一些地图中。我使用ggmaps,目前正在使用ggsn包插入比例尺。然而,在我正在使用的地图类型上,这个比例尺是非常难以阅读的(参见下面的地图)。我想(a)找到一种更容易阅读的方法,(b)让比例尺在地图边界之外,或者(c)使用一个不同的软件包,以便于定制 本质上,我的代码是这样的。该示例应易于复制 map <- get_map(location = c(146, 15), zoom = 8, maptype = “satellite”, s
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')
mapGithub的scalebar
开发版本有新的参数,st.color
和box.fill
,可以更好地定制条形图
使用以下方法安装该版本:
devtools::install_github('oswaldosantos/ggsn')
然后使用例如:
旧答案
我写了这个关于如何在发现新版本之前修改函数的答案
我认为这里最好的方法是修改scalebar
函数
首先,您需要加载ggsn
包并编辑函数:
library(ggsn)
my_scalebar <- edit(scalebar)
我们增加了3件事:
- 参数
box2\u使用默认值=“黄色”填充
- 默认值为“白色”的参数
legend\u color
- 需要
maptools
,因为函数使用该包中的gcDestination()
接下来,查找以gg.box2
开头的行,并将其更改为使用box2\u fill
的值:
gg.box2 <- geom_polygon(data = box2, aes(x, y), fill = box2_fill,
color = "black")
保存将关闭编辑器,并将新函数my_scalebar
保存到您的工作空间
现在您可以使用新函数了。您可以为新参数box2\u fill=
和legend\u 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')
如果您认为您的编辑是有用的,您可以使用pull请求向包开发人员推荐它们。注意:开发人员似乎已经开始解决这个问题,因为Github版本的scalebar
有新的框。fill
和st.color
参数。ggsn::scalebar
看起来不是很可配置,没有重写函数。根据您想要的输出类型,传单
包可能是一个选项(它用于交互式HTML/JS映射,但也可以生成静态映射)。如果传单解决方案听起来有用,很乐意发布。传单与ggplot2一起使用吗?我的脚本很大一部分取决于能否使用ggplot2在地图顶部绘制内容。非常感谢你!不,传单和ggplot2是分开的。我只能建议查看scalebar函数的代码,看看它是否可以修改。添加了一个说明如何修改函数的答案。对此答案进行了一次编辑:dd2km已折旧。它需要替换为transform=TRUE,dist\u unit=“km”
gg.box2 <- geom_polygon(data = box2, aes(x, y), fill = box2_fill,
color = "black")
else {
gg.legend <- annotate("text", label = paste0(legend[,
"text"], "km"), x = x.st.pos, y = st.dist, size = st.size,
color = 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')