Tufte Sparklines (as illustrated in his Beautiful Evidence) have been replicated in base graphics as part of YaleToolkit and further perfected as a result of this question. Sparklines have also been done in lattice as a part of my small side project Tufte in R (self-promotion not intended). My goal now is to replicate Tufte sparklines in ggplot2. There are some scripts floating around on Gist and also as a reply to this question on SO, but none of those give a solid base for making replicable sets of sparklines.
Now, I would like those multiple sparklines to look like this (it was done in base graphics and the code is available here) - dots stand for maximum/minimum values, number on right end is a final value in specific time series and grey band shows a rough quantiles range:
I'm not far away but I'm stuck with the assignment of minimal/maximum values and labels:
library(ggplot2)
library(ggthemes)
library(dplyr)
library(reshape)
library(RCurl)
dd <- read.csv(text =
getURL("https://gist.githubusercontent.com/GeekOnAcid/da022affd36310c96cd4/raw/9c2ac2b033979fcf14a8d9b2e3e390a4bcc6f0e3/us_nr_of_crimes_1960_2014.csv"))
d <- melt(dd, id="Year")
names(d) <- c("Year","Crime.Type","Crime.Rate")
dd <- group_by(d, Crime.Type) %>%
mutate(color = (min(Crime.Rate) == Crime.Rate | max(Crime.Rate) == Crime.Rate))
ggplot(dd, aes(x=Year, y=Crime.Rate)) +
facet_grid(Crime.Type ~ ., scales = "free_y") +
geom_line(size=0.3) + geom_point(aes(color = color)) +
scale_color_manual(values = c(NA, "red"), guide=F) +
theme_tufte(base_size = 15) +
theme(axis.title=element_blank(),
axis.text.y = element_blank(), axis.ticks = element_blank()) +
theme(strip.text.y = element_text(angle = 0, vjust=0.2, hjust=0))
Here is one approach to getting single colored points, as well as the three sets of labels and shaded quartile ranges:
I'm assuming you don't want a legend here. You can almost certainly make things more concise by merging some data.frames, but multiple geom calls seem to be easiest here.