【发布时间】:2015-11-24 23:47:51
【问题描述】:
我正在尝试使用 ggplot 绘制加拿大地图并根据总销售额对每个地区进行颜色编码。地理空间文件来自 GADM,仅包含 12 个省(1 级)。当我强化数据时,生成的 data.frame 超过 400 万行。当我尝试用 ggplot 绘制地图时,它似乎挂起。我已经离开了 30 分钟,不得不放弃。
问题是设防结果的大小吗?我不知道如何减小尺寸。我曾尝试在 fortify 中使用“区域”参数,但这会导致 fortify 似乎挂起。
我已经包含了我所有的代码和用于下载我正在使用的数据的 URL。
require(dplyr)
# loaded from: https://raw.githubusercontent.com/Technology-Hatchery/Rcode/master/Data/Sample%20-%20Superstore%20Sales%20(Excel).csv
orders <- read.csv(file='Data/Orders.csv', sep=',', header=TRUE, na.strings = '')
orders$Order.Date <- as.Date(orders$Order.Date, '%m/%d/%y')
orders$Order.Priority <- as.factor(orders$Order.Priority)
orders$Customer.Name <- as.character(orders$Customer.Name)
orders$Ship.Date <- as.Date(orders$Ship.Date, '%m/%d/%y')
orders$Order.Total <- orders$Unit.Price * orders$Order.Quantity
orders <- tbl_df(orders)
require(raster)
require(ggplot2)
require(RColorBrewer)
require(rgdal)
require(rgeos)
# map from GADM: http://biogeo.ucdavis.edu/data/gadm2.7/rds/CAN_adm1.rds
canada <- readRDS('../../Geo/GADM/Canada/CAN_adm1.rds')
canada <- spTransform(canada, CRS("+proj=longlat +datum=WGS84"))
# Add my data to spatial polygon data.frame
canada.df <- fortify(canada)
summary(canada.df)
nrow(canada.df)
# [1] 4005898
# Build region list and add to spatial DF
provinces <- canada@data %>% dplyr::select(OBJECTID, NAME_1) %>% dplyr::rename(id = OBJECTID, Province = NAME_1)
head(provinces)
# Add total sales to spatial DF
provinceOrders <- orders %>% mutate(Province = as.character(Province)) %>%
left_join(., provinces, by='Province') %>%
group_by(id, Province) %>%
dplyr::summarise(Total = sum(Order.Total)) %>%
dplyr::select(id, Total)
head(provinceOrders)
canada.df <- merge(canada.df, provinceOrders, by='id', all.x=TRUE)
canada.df <- arrange(canada.df, order, group)
head(canada.df)
ggplot() +
geom_polygon(data=canada.df, aes(x=long, y=lat, group=group, fill=Total), color='white') +
scale_fill_gradient(high='Red', low= 'Blue')
#geom_text(aes(label=Province, x=long, y=lat))
【问题讨论】:
标签: r ggplot2 polygon geospatial