Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Thanks to R-bloggers, I discovered that googleVis 0.4.7 with RStudio integration is available on CRAN.
This is great news, but wasn’t this that catched my eye. At the end of the post a beautiful map shows a terrible event of the last days: the devastating typhoon track of Haiyan that hit Southeast Asia in November.
It was amazing for me that this plot was created with only 13 lines of code, the following ones:
library(XML) library(googleVis) url <- "http://www.gdacs.org/Cyclones/report.aspx?eventid=41058&episodeid=28&eventtype=TC" dat <- readHTMLTable(readLines(url), which = 5) dat$latlon <- dat[, 8] levels(dat$latlon) <- sapply(strsplit(levels(dat[, 8]), ",\n "), function(x) paste(x[2], x[1], sep = ":")) dat$Category <- factor(dat$Category, levels = levels(dat$Category)[c(6, 7, 1:5)], ordered = TRUE) dat$cat <- as.numeric(dat$Category) dat$Gust_kmh <- dat[, 6] levels(dat$Gust_kmh) <- sapply(strsplit(levels(dat[, 6]), "km"), function(x) gsub(" ", "", x[1])) dat$Gust_kmh <- as.numeric(as.character(dat$Gust_kmh)) M <- gvisGeoChart(dat, "latlon", sizevar = "cat", colorvar = "Gust_kmh", options = list(region = "035", backgroundColor = "lightblue", datalessRegionColor = "grey")) plot(M) |
To be honest, some more break lines will increase code readibility as reported below, but it is wonderful how this plot can be drawn with so few lines of code: two lines about options (loading libraries), nine lines to import data and only one line to produce the plot (and another one to view it!).
Sometimes, also nice things are easy to be obtained.
### Loading packages library(XML) library(googleVis) ### Data import and preparation url <- "http://www.gdacs.org/Cyclones/report.aspx?eventid=41058&episodeid=28&eventtype=TC" dat <- readHTMLTable(readLines(url), which = 5) dat$latlon <- dat[, 8] levels(dat$latlon) <- sapply( strsplit(levels(dat[, 8]), ",\n "), function(x) paste(x[2], x[1], sep = ":") ) dat$Category <- factor(dat$Category, levels = levels(dat$Category)[c(6, 7, 1:5)], ordered = TRUE ) dat$cat <- as.numeric(dat$Category) dat$Gust_kmh <- dat[, 6] levels(dat$Gust_kmh) <- sapply( strsplit(levels(dat[, 6]), "km"), function(x) gsub(" ", "", x[1]) ) dat$Gust_kmh <- as.numeric(as.character(dat$Gust_kmh)) ### Plot M <- gvisGeoChart( dat, "latlon", sizevar = "cat", colorvar = "Gust_kmh", options = list( region = "035", backgroundColor = "lightblue", datalessRegionColor = "grey" ) ) plot(M) |
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.