【发布时间】:2015-11-27 07:09:19
【问题描述】:
我正在关注this 教程来移动和重新缩放阿拉斯加和夏威夷。这是我正在运行的代码:
x = c("ggplot2", "rgdal", "maptools", "mapproj", "rgeos")
lapply(x, library, character.only = TRUE)
remove.territories = function(.df) {
subset(.df,
.df$id != "AS" &
.df$id != "MP" &
.df$id != "GU" &
.df$id != "PR" &
.df$id != "VI"
)
}
plain_theme = theme(axis.text=element_blank()) +
theme(panel.background = element_blank(),
panel.grid = element_blank(),
axis.ticks = element_blank())
no_ylab = ylab("")
no_xlab = xlab("")
# From https://www.census.gov/geo/maps-data/data/cbf/cbf_state.html
us <- readOGR(dsn = "./cb_2014_us_state_5m.shp",
layer = "cb_2014_us_state_5m", verbose = FALSE)
# Transform geographical coordinates to Lambert Azimuth Equal Area projection
us_aea = spTransform(us, CRS("+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs"))
us_aea@data$id = rownames(us_aea@data)
#Move Alaska (scaled down) and Hawaii
alaska = us_aea[us_aea$STATEFP=="02",]
alaska = elide(alaska, rotate=-50)
alaska = elide(alaska, scale=max(apply(bbox(alaska), 1, diff)) / 2.3)
alaska = elide(alaska, shift=c(-2100000, -2500000))
proj4string(alaska) = proj4string(us_aea)
hawaii = us_aea[us_aea$STATEFP=="15",]
hawaii = elide(hawaii, rotate=-35)
hawaii = elide(hawaii, shift=c(5400000, -1400000))
proj4string(hawaii) = proj4string(us_aea)
#Remove Alaska and Hawaii from base map and substitute transformed versions
us50 <- fortify(us_aea, region="STUSPS")
us50 = remove.territories(us50)
#plot
p = ggplot(data=us50) +
geom_map(map=us50, aes(x=long, y=lat, map_id=id, group=group), ,fill="white", color="dark grey", size=0.15) +
no_ylab +
no_xlab +
plain_theme
p
我不确定我缺少什么我的地图看起来不像教程中的地图:
【问题讨论】:
-
不知道你有没有检查过this useful link。
-
Nathan Yau 在他的 ($) 订阅可视化系列中也有一个很好的基础图示例。
-
@hrbrmstr 我正在尝试与
leaflet一起工作。你知道某处有没有例子吗? -
@Ignacio 它可能可以使用 Proj4Leaflet 插件:github.com/kartena/Proj4Leaflet 并且在 RStudio 传单 github 问题区域中存在/曾经有一些关于此的讨论,但预测不是传单的优势之一。您是否正在寻找将其转换为交互式 javascript 地图的方法或需要专门的传单?
-
我们的目标是学习如何把它变成一个交互式 javascript 地图。还有比
leaflet更好的选择吗?