使用具有大缩放系数的ggmap时显示所有国家/地区名称

时间:2017-10-13 07:59:17

标签: r format ggmap country

我尝试使用ggmap get_googlemap函数绘制地图并格式化国家/地区名称。 下载给我一张地图,默认情况下不会显示所有国家/地区名称,可能是由于缩放系数。由于此后我稍微缩小了它,因此有足够的空间来容纳其他国家/地区名称。更重要的是,我还想做一些格式化,摆脱国名背后的白色背景。 不幸的是,google的地图格式化语法似乎没有按照应有的方式运行,或者我可能以错误的方式使用它。

请注意,我不需要依赖谷歌地图,实际上首选openstreet地图。尽管如此,我目前无法使用它们,因为在指定source = "osm"时,使用get_map函数下载地图总是会给我一个错误(可能是服务器问题)。

所以我试过的是:

library(ggmap)

map <- get_googlemap(center = "Europe", zoom = 3, 
                     style = paste(         #selecting all countries
                                   "feature:administrative.country|",
                                            #trying to make all country names visible
                                   "element:labels.text|visibility:all|",
                                            #trying to reduce the white background to 0
                                   "element:geometry.fill|weight:0|",
                                            #trying to play around with text size
                                   "element:labels.text|weight:20|"
                                   sep = ""),
                     filename = "MAP", language = "en-EN")
ggmap(map) #displaying the raw map

#Scaling down the map and removing unnecessary information
ggmap(map)+
  scale_x_continuous(limits = c(-25, 57), expand = c(0, 0)) +
  scale_y_continuous(limits = c(25, 70), expand = c(0, 0))+
  theme(axis.title.x    = element_blank(),
        axis.title.y    = element_blank(),
        axis.line       = element_blank(),
        axis.ticks      = element_blank(),
        axis.text       = element_blank(),
        plot.title      = element_blank(),
        plot.background = element_blank())

我得到的内容如下:sample map

正如您所看到的,并非所有国家/地区名称都会显示,并且格式设置无法正常运行。 当然,我可以使用annotate函数并手动编写缺少的国家/地区名称(请参阅下面的示例),但下载过程中是否有更舒适的方式(如果可能的话,首选的是openstreetmap)?

最糟糕的情况是必须手动添加缺失的名称,如下所示:

ggmap(map)+
  scale_x_continuous(limits = c(-25, 57), expand = c(0, 0)) +
  scale_y_continuous(limits = c(25, 70), expand = c(0, 0))+
  theme(axis.title.x    = element_blank(),
        axis.title.y    = element_blank(),
        axis.line       = element_blank(),
        axis.ticks      = element_blank(),
        axis.text       = element_blank(),
        plot.title      = element_blank(),
        plot.background = element_blank()) +
  annotate("text", x = 20.21484375, y = 40.245991504199026, 
           label =  "Albania", 
           size = 4, color = "black", fontface = "plain")

这样可行,但文本格式之间仍然存在很大的明显差异。在第二步中,我将使用annotate函数为每个国家/地区添加数字,因此需要调整文本大小。

这是我手动添加国家/地区名称时得到的结果:sample map with annotation

提前谢谢!

编辑:用

替换google语法时
paste("feature:administrative.country|",
      "element:labels|visibility:off",
      sep = "")

至少可以关闭所有国家/地区名称并手动添加所有国家/地区名称,这样可以更轻松地进行格式化。

0 个答案:

没有答案