The goal of jplots is to provide some customized plot functions.
You can install the development version of jplots from GitHub with:
# install.packages("devtools") devtools::install_github("jameelalsalam/jplots")
geom_area_bar constructs variable-width bars. Unlike the
width parameter to
geom_bar, this treats the x-axis as a numeric
scale. For this reason there is no gap between the area_bars (as the
gap would create offset on x-axis scale).
suppressPackageStartupMessages(library(ggplot2)) library(jplots) ggplot(ei_ex, aes(x = vos, y = ei, fill = naics)) + geom_area_bar(color = "black")
It now handles facets:
ggplot(ei_ex, aes(x = vos, y = ei, fill = naics)) + facet_grid(rows = vars(stringr::str_sub(naics, 4, 4) == "2")) + geom_area_bar(color = "black")
There are also custom functions to create an “envelope” around a set of lines, as a way to summarize multiple series.
This version uses the
envelope_fig function which constructs the
envelope_fig(aeo_ex, xname = year, yname = emissions, groupname = scenario, facetname = fuel)
However, this approach is not as flexible as using the official ggplot2
extension approach. The following approach extends
geom_ribbon with a
geom_envelope that calculates the minimum/maximum value
y at each value of
x and draws an envelope around that range.
ggplot(aeo_ex, mapping = aes(x = year, y = emissions)) + facet_grid(. ~ fuel) + geom_line(aes(group = scenario), color = "light blue") + geom_envelope(aes(fill = fuel))
This approach allows re-mixing the geometry in different ways, e.g., without the facetting:
ggplot(aeo_ex, mapping = aes(x = year, y = emissions)) + geom_line(aes(group = interaction(fuel, scenario)), color = "light blue") + geom_envelope(aes(fill = fuel, group = fuel))
One important detail: the line geom and the envelope geom have different
groupings, so the group aesthetic will have to be specified in one or
both geoms. The
interaction function is useful to group by the
interaction of two variables on the fly.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.