用R创建的地理地图填充大陆区域

时间:2011-09-29 13:42:13

标签: r geolocation maps plot geocoding

我尝试使用R中的maps-package创建地理地图。我不确定这是否是“选择包”。

我试图用蓝色背景,白色大陆地区和红色国家边界绘制世界地图。但看起来,如果没有用黑色绘制国家边界,就不可能填充区域。我的错是什么?

library(maps)

# Show the World map without country border,
# with black continent boundaries on a bluish background 
map("world", interior=F, boundary=T, bg="#ddeeff", col="black")

# Fill continental areas in white
map("world", col="white", interior=F, fill=TRUE, add=T)

# Add country borders in red
map("world", interior=T, boundary=F, col="red", add=T)

使用?map给我:

  

fill - 逻辑标志,表示是否绘制线条或填充区域。如果为FALSE,则将绘制限定每个区域的线(但对于内部线,仅绘制一次)。如果为TRUE,则将使用col =参数中的颜色填充每个区域,并且不会绘制边界线

我的R版本是:

  

平台x86_64-apple-darwin9.8.0
  拱x86_64
  os darwin9.8.0
  system x86_64,darwin9.8.0
  状态
  专业2   未成年人13.0
  2011年   月04日   第13天   svn rev 55427
  语言R
  version.string R版本2.13.0(2011-04-13)

3 个答案:

答案 0 :(得分:4)

使用基本图形:

(黑色边界上有一定数量的红色过度绘图 - 我无法找到完全摆脱这种情况的方法。)

library(maps)
map("world", interior=TRUE, fill=TRUE, boundary=FALSE, col="white", bg="lightblue")
map("world", interior=TRUE, boundary=TRUE, col="red", add=TRUE)

enter image description here

使用ggplot

(使用ggplot,您可以完全控制所有颜色,并且没有过度绘制。但渲染需要更长的时间......)

library(ggplot2)
library(maps)
mapWorld <- borders("world", colour="red", fill="white")
ggplot() + 
  mapWorld + 
  geom_path() + 
  opts(
    plot.background=theme_rect(fill="lightblue"),
    panel.background=theme_rect(fill="lightblue")
    )

enter image description here

答案 1 :(得分:2)

可以在单个地图中更改边框的颜色&#39;命令:

map("world", fill=TRUE, col="white", bg="lightblue", border="red")

&#34; border =&#39; red&#39;&#34;选项没有在&#39;?map&#39;中明确记录,因为它实际上是&#34; polygon()&#34;的直接选项。从map()内部调用。它是&#34; ...&#34;的一部分。在map()中调用。

答案 2 :(得分:1)

使用基本图形:

为了避免过度绘图,您可以在第一次调用中将lty参数设置为0以填充国家/地区而不绘制黑色边界。

library(maps)   
map("world", interior=TRUE, fill=TRUE, boundary=FALSE, col="white", lty=0, bg="lightblue")
map("world", interior=TRUE, boundary=TRUE, col="red", add=TRUE)