R语言ggmap裁剪地图时保留谷歌版权信息的方法咨询
解决ggmap自定义范围时保留谷歌版权信息的问题
我完全懂你的困扰——当你用scale_x/y_continuous裁剪地图到英国本土时,谷歌的版权信息被硬生生裁掉了,调zoom又总是没法刚好框住整个区域,发表用的图可不能缺了版权信息!下面几个方案应该能帮到你:
方案1:调整绘图边距,让版权信息露出来
版权信息其实并没有消失,只是被你设置的expand = c(0,0)挤到了绘图区域外面。给整个图表加一点底部边距,就能让它显示出来:
ggmap(base_map, extent = "panel") + scale_x_continuous(limits = c(-7, 3), expand = c(0, 0)) + scale_y_continuous(limits = c(49.5, 59), expand = c(0, 0)) + theme(plot.margin = margin(b = 25, unit = "pt")) # 底部边距可以根据需要调整数值
这个方法最简单,不用改地图获取的逻辑,只是给版权信息腾出显示空间。
方案2:直接获取刚好覆盖目标区域的地图(推荐)
与其先拿大地图再裁剪,不如一开始就获取刚好覆盖英国本土的地图,从根源上避免裁剪问题。用make_bbox生成边界框,再让ggmap自动计算合适的zoom级别:
# 生成英国本土的精确边界框,f参数控制轻微扩展,避免边缘内容被裁 uk_bbox <- make_bbox(lon = c(-7, 3), lat = c(49.5, 59), f = 0.05) # 自动计算合适的zoom级别,直接获取目标区域地图 base_map_uk <- get_googlemap( center = c(lon= -2.325278, lat=54.6), zoom = calculate_zoom(uk_bbox), style = 'element:labels|visibility:off', color= "bw" ) # 直接绘制,版权信息会完整保留在底部 ggmap(base_map_uk, extent = "panel")
这个方法最稳妥,得到的地图刚好匹配你要的范围,不需要后续裁剪,版权信息自然不会被裁切。
方案3:手动添加版权信息(备用)
如果前面的方法都不适用,你可以手动把谷歌版权信息添加到图中——注意要使用正确的版权文本(谷歌的版权信息会随时间更新,一般格式是©年份 Google):
ggmap(base_map, extent = "panel") + scale_x_continuous(limits = c(-7, 3), expand = c(0, 0)) + scale_y_continuous(limits = c(49.5, 59), expand = c(0, 0)) + annotate("text", x = -7, y = 49.3, # 调整坐标到地图底部外侧 label = "©2024 Google", hjust = 0, size = 3, color = "gray50") + theme(plot.margin = margin(b = 25, unit = "pt"))
个人最推荐方案2,它既保证了地图范围的精确性,又能完美保留谷歌的版权信息,完全符合发表需求。
内容的提问来源于stack exchange,提问作者QPaps
相关产品推荐
相关产品推荐

