2015-04-02 36 views
0

我一直在瀏覽R中的許多地圖主題,並希望得到一些幫助。向R中的加拿大地圖添加省份

我已經制作了這個代碼,它建立了購買密度的圖像,然後在頂部和加拿大國家地圖上覆蓋美國國家地圖。

這是一個很好的解決方案,但理想情況下,我想顯示加拿大的省份。

library(mapdata); 
library(maps); 
library(maptools); 
library(spatstat); 

png(filename=file_name, type="cairo-png", bg="transparent", width=10.*960, height=10.*960, pointsize=1); 
spatstat.options(npixel=c(1000,1000)); 
densitymap<-density(points, sigma=0.15, weights=dedupedMergedZips[!is.na(dedupedMergedZips$longitude), zipCount]); 

my.palette <- colorRampPalette(c("#3F3F3F","#e2ffcc","#b6ff7f","white"), bias=2, space="rgb") 

image(densitymap, col=my.palette(200)); 
map("state", col="grey", fill=FALSE, bg="transparent", lwd=3.0, xlim=longitudeLimits, ylim=latitudeLimits, add = TRUE); 
map("worldHires","Canada", xlim=longitudeLimits, ylim=latitudeLimits, col="grey", fill=FALSE, bg="transparent", lwd=3.0, add=TRUE) 

dev.off() 

有關如何在第二行添加額外參數以獲取各省顯示的任何提示?

感謝

+0

你提供的兩行代碼的前面是什麼代碼?也就是說,我認爲加拿大有哪些世界地圖和什麼包,以及我認爲的子集? – lawyeR 2015-04-02 20:37:22

+0

我正在使用庫(mapdata)和庫(地圖)。我爲這個問題添加了更多細節。 – OttoS 2015-04-03 21:36:47

回答

1

這裏是一個解決方案,基於傳單

library(rgdal) 

if (!file.exists("./src/ref/ne_50m_admin_1_states_provinces_lakes/ne_50m_admin_1_states_provinces_lakes.dbf")){ 
    download.file(file.path('http://www.naturalearthdata.com/http/', 
          'www.naturalearthdata.com/download/50m/cultural', 
          'ne_50m_admin_1_states_provinces_lakes.zip'), 
       f <- tempfile()) 
    unzip(f, exdir = "./src/ref/ne_50m_admin_1_states_provinces_lakes") 
    rm(f) 
} 

region <- readOGR("./src/ref/ne_50m_admin_1_states_provinces_lakes", 'ne_50m_admin_1_states_provinces_lakes', encoding='UTF-8') 

library(leaflet) 

leaflet() %>% 
    addTiles() %>% 
    setView(-74.09, 45.7, zoom = 3) %>% 
    addPolygons(data = subset(region, name %in% c("British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Prince Edward Island", "Nova Scotia", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut")), 
       fillColor = topo.colors(10, alpha = NULL), 
       weight = 1) 

enter image description here

這裏是另一個建議利用GGPLOT2

library(ggplot2) 

regions <- subset(region, name %in% c("British Columbia", "Alberta", "Saskatchewan", "Manitoba", "Ontario", "Quebec", "New Brunswick", "Prince Edward Island", "Nova Scotia", "Newfoundland and Labrador", "Yukon", "Northwest Territories", "Nunavut")) # region is defined in the first part of the code (see above) 

ggplot(regions) + 
    aes(long,lat, group = group, fill = group) + 
    geom_polygon() + 
    geom_path(color="white") + 
    coord_equal() + 
    guides(fill = FALSE) 

enter image description here

+0

非常感謝!這是一個很好的備份選項 - 雖然理想情況下,我想對現在的工作代碼進行小修改。 – OttoS 2015-04-03 21:41:28

+0

@OttoS,也許ggplot2可以完成這項工作.. – cho7tom 2015-04-04 20:27:13