我尝试使用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())
正如您所看到的,并非所有国家/地区名称都会显示,并且格式设置无法正常运行。
当然,我可以使用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
函数为每个国家/地区添加数字,因此需要调整文本大小。
提前谢谢!
编辑:用
替换google语法时paste("feature:administrative.country|",
"element:labels|visibility:off",
sep = "")
至少可以关闭所有国家/地区名称并手动添加所有国家/地区名称,这样可以更轻松地进行格式化。