Use the color scales in this package to make plots that make use of the palette inspired by the TV show Game of Thrones.
Install got like any R package:
library(devtools) devtools::install_github("aljrico/gameofthrones", force = TRUE) library(gameofthrones)
For base plots, use the got()
function to generate a palette:
library(gameofthrones) knitr::opts_chunk$set(echo = TRUE, fig.retina=2, fig.width=7, fig.height=5)
x <- y <- seq(-8*pi, 8*pi, len = 40) r <- sqrt(outer(x^2, y^2, "+")) filled.contour(cos(r^2)*exp(-r/(2*pi)), axes=FALSE, color.palette=got, asp=1)
For ggplot, use scale_colour_got()
and scale_fill_got()
:
library(ggplot2) ggplot(data.frame(x = rnorm(10000), y = rnorm(10000)), aes(x = x, y = y)) + geom_hex() + coord_fixed() + scale_fill_got(house = "baratheon") + theme_bw()
The gameofthrones package brings to R colour scales created by Alejandro Jimenez Rico from the Game of Thrones TV show s
The package contains many colour scales.
n_col <- 128 img <- function(obj, nam) { image(1:length(obj), 1, as.matrix(1:length(obj)), col=obj, main = nam, ylab = "", xaxt = "n", yaxt = "n", bty = "n") }
library(gameofthrones) library(scales) library(colorspace) library(dichromat)
par(mfrow=c(4, 1), mar=rep(1, 4)) img(rev(got(n_col, house = "martell")), "martell") img(rev(got(n_col, house = "stark")), "stark") img(rev(got(n_col, house = "targaryen2")), "targaryen2") img(rev(got(n_col, house = "baratheon")), "baratheon")
The got()
function produces the Game of Thrones color scale. You can choose
the other color scale options using the house
parameter.
The package also contains color scale functions for ggplot
plots: scale_color_got()
and scale_fill_got()
. As with got()
, you can use the other scales with the house
argument
in the ggplot
scales. Here this is used for a cloropleth
map of U.S. unemployment:
unemp <- read.csv("http://datasets.flowingdata.com/unemployment09.csv", header = FALSE, stringsAsFactors = FALSE) names(unemp) <- c("id", "state_fips", "county_fips", "name", "year", "?", "?", "?", "rate") unemp$county <- tolower(gsub(" County, [A-Z]{2}", "", unemp$name)) unemp$county <- gsub("^(.*) parish, ..$","\\1", unemp$county) unemp$state <- gsub("^.*([A-Z]{2}).*$", "\\1", unemp$name) county_df <- map_data("county", projection = "albers", parameters = c(39, 45)) names(county_df) <- c("long", "lat", "group", "order", "state_name", "county") county_df$state <- state.abb[match(county_df$state_name, tolower(state.name))] county_df$state_name <- NULL state_df <- map_data("state", projection = "albers", parameters = c(39, 45)) choropleth <- merge(county_df, unemp, by = c("state", "county")) choropleth <- choropleth[order(choropleth$order), ] ggplot(choropleth, aes(long, lat, group = group)) + geom_polygon(aes(fill = rate), colour = alpha("white", 1 / 2), size = 0.2) + geom_polygon(data = state_df, colour = "white", fill = NA) + coord_fixed() + theme_minimal() + ggtitle("US unemployment rate by county") + theme(axis.line = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank()) + scale_fill_got(house="stark") ggplot(choropleth, aes(long, lat, group = group)) + geom_polygon(aes(fill = rate), colour = alpha("white", 1 / 2), size = 0.2) + geom_polygon(data = state_df, colour = "white", fill = NA) + coord_fixed() + theme_minimal() + ggtitle("US unemployment rate by county") + theme(axis.line = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank()) + scale_fill_got(house="martell") ggplot(choropleth, aes(long, lat, group = group)) + geom_polygon(aes(fill = rate), colour = alpha("white", 1 / 2), size = 0.2) + geom_polygon(data = state_df, colour = "white", fill = NA) + coord_fixed() + theme_minimal() + ggtitle("US unemployment rate by county") + theme(axis.line = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank()) + scale_fill_got(house="targaryen2") ggplot(choropleth, aes(long, lat, group = group)) + geom_polygon(aes(fill = rate), colour = alpha("white", 1 / 2), size = 0.2) + geom_polygon(data = state_df, colour = "white", fill = NA) + coord_fixed() + theme_minimal() + ggtitle("US unemployment rate by county") + theme(axis.line = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank()) + scale_fill_got(house="baratheon")
The ggplot functions also can be used for discrete scales with the argument
discrete=TRUE
.
p <- ggplot(mtcars, aes(wt, mpg)) p + geom_point(size=4, aes(colour = factor(carb))) + scale_color_got(discrete=TRUE, house = "targaryen2") + theme_bw()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.