Created
January 24, 2014 03:01
-
-
Save jdavidson/8591371 to your computer and use it in GitHub Desktop.
geographic visualization of start up fund raising trends
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require(ggmap) | |
require(animation) | |
library(ggplot2) | |
library(ggthemes) | |
library(dplyr) | |
library(lubridate) | |
library(scales) | |
library(data.table) | |
library(reshape2) | |
options(scipen=999) | |
options(stringsAsFactors = FALSE) | |
rounds <- read.csv("2014-01-06-crunchbase_monthly_export_rounds.csv") | |
# dedup | |
rounds <- data.table(rounds) | |
setkeyv(rounds, c("company_name", "funded_at", "funding_round_type")) | |
rounds <- unique(rounds) | |
rounds <- subset(rounds, funded_month != "1960-01") | |
# fix strange date data | |
rounds$funded_at <- ymd(paste(rounds$funded_month, "01", sep="-")) | |
# clean up rounds | |
rounds <- filter(rounds, company_country_code == "USA", company_state_code != "") | |
rounds$company_region <- toupper(gsub(" - Other", "", rounds$company_region)) | |
rounds$company_city <- toupper(gsub("[^[:alnum:]///' ]", "", rounds$company_city)) | |
rounds[company_region == "SF BAY"]$company_state_code <- "CA" | |
rounds[company_region == "NEW YORK"]$company_state_code <- "NY" | |
rounds[company_region == "LOS ANGELES"]$company_state_code <- "CA" | |
rounds <- filter(rounds, !company_region %in% c("UNKNOWN", "TBD")) | |
rounds$geocode <- paste(rounds$company_region, rounds$company_state_code, rounds$company_country_code) | |
# regions <- unique(rounds$geocode) | |
# geocodes <- geocode(regions) | |
# regions <- data.frame(geocode=regions, geocodes) | |
# write.csv(regions, "regions-geocoded.csv") | |
regions <- read.csv("regions-geocoded.csv") | |
geocode_summary <- rounds[, list(rounds=length(funded_at), raised_amount_usd=sum(raised_amount_usd, na.rm=T)), by=c("geocode", "funded_year")] | |
geocode_summary <- inner_join(geocode_summary, regions) | |
us_map <- get_map(location="united states", zoom=4, scale=2, maptype="roadmap", color="bw") | |
years <- seq(2005, 2013, 1) | |
saveGIF({ | |
for(year in years) { | |
print(ggmap(us_map) + theme(legend.position=c(.9,.2),legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=raised_amount_usd / 1e9), alpha=.6, color="blue") + scale_size_area(name="Billions ($)", max_size=20, limits=c(1, max(geocode_summary$raised_amount_usd / 1e9)))) | |
} | |
}, interval=2, movie.name="raised-year.gif", ani.width=640, ani.height=640) | |
plot <- ggmap(us_map) + theme(legend.position=c(.9,.2),legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=raised_amount_usd / 1e9), alpha=.6, color="blue") + scale_size_area(name="Billions ($)", max_size=20, limits=c(1, max(geocode_summary$raised_amount_usd / 1e9))) | |
ggsave("raised-2013.png", plot, width=640 / 72, height=640 / 72, dpi=72) | |
saveGIF({ | |
for(year in years) { | |
print(ggmap(us_map) + theme(legend.position=c(.9,.2), legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=rounds), alpha=.6, color="blue") + scale_size_area(name="Rounds", max_size=20, limits=c(1, max(geocode_summary$rounds)))) | |
} | |
}, interval=2, movie.name="rounds-year.gif", ani.width=640, ani.height=640) | |
### California | |
rounds <- filter(rounds, company_state_code == "CA") | |
rounds$geocode <- paste(rounds$company_city, rounds$company_state_code, rounds$company_country_code) | |
# cities <- unique(rounds$geocode) | |
# geocodes <- geocode(cities) | |
# cities <- data.frame(geocode=cities, geocodes) | |
# write.csv(cities, "ca-cities-geocoded.csv") | |
cities <- read.csv("ca-cities-geocoded.csv") | |
geocode_summary <- rounds[, list(rounds=length(funded_at), raised_amount_usd=sum(raised_amount_usd, na.rm=T)), by=c("geocode", "funded_year")] | |
geocode_summary <- inner_join(geocode_summary, cities) | |
ca_map <- get_map(location="california", zoom=6, scale=2, maptype="roadmap", color="bw") | |
saveGIF({ | |
for(year in years) { | |
print(ggmap(ca_map) + theme(legend.position=c(.9,.2),legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=raised_amount_usd / 1e9), alpha=.6, color="blue") + scale_size_area(name="Billions ($)", max_size=20, limits=c(1, max(geocode_summary$raised_amount_usd / 1e9)), breaks=c(2,4,6))) | |
} | |
}, interval=2, movie.name="ca-raised-year.gif", ani.width=640, ani.height=640) | |
saveGIF({ | |
for(year in years) { | |
print(ggmap(ca_map) + theme(legend.position=c(.9,.2), legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=rounds), alpha=.6, color="blue") + scale_size_area(name="Rounds", max_size=20, limits=c(1, max(geocode_summary$rounds)))) | |
} | |
}, interval=2, movie.name="ca-rounds-year.gif", ani.width=640, ani.height=640) | |
sf_map <- get_map(location="san francisco", zoom=9, scale=2, maptype="roadmap", color="bw") | |
saveGIF({ | |
for(year in years) { | |
print(ggmap(sf_map) + theme(legend.position=c(.9,.2),legend.key = element_rect(fill=alpha("white", .2)), legend.background = element_rect(fill=alpha("white", .9)), axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank()) + ggtitle(paste(year)) + geom_point(data=filter(geocode_summary, funded_year == year), aes(x=lon, y=lat, size=raised_amount_usd / 1e9), alpha=.6, color="blue") + scale_size_area(name="Billions ($)", max_size=20, limits=c(1, max(geocode_summary$raised_amount_usd / 1e9)), breaks=c(2,4,6))) | |
} | |
}, interval=2, movie.name="sf-raised-year.gif", ani.width=640, ani.height=640) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment