Skip to content

Commit

Permalink
v2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
nanxstats committed Nov 20, 2016
1 parent ec50075 commit 407ec4f
Show file tree
Hide file tree
Showing 45 changed files with 1,060 additions and 155 deletions.
9 changes: 6 additions & 3 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
Package: ggsci
Type: Package
Title: Scientific Journal and Sci-Fi Themed Color Palettes for 'ggplot2'
Version: 1.5
Version: 2.0
Author: Nan Xiao <[email protected]>, Miaozhu Li <[email protected]>
Maintainer: Nan Xiao <[email protected]>
Description: A collection of 'ggplot2' color palettes inspired by scientific journals and science fiction TV shows.
Description: A collection of 'ggplot2' color palettes inspired by
scientific journals, data visualization libraries, and
science fiction TV shows.
License: GPL
LazyData: TRUE
VignetteBuilder: knitr
Expand All @@ -19,5 +21,6 @@ Imports:
Suggests:
knitr,
rmarkdown,
gridExtra
gridExtra,
reshape2
RoxygenNote: 5.0.1
16 changes: 16 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
# Generated by roxygen2: do not edit by hand

export(pal_aaas)
export(pal_d3)
export(pal_futurama)
export(pal_gsea)
export(pal_jco)
export(pal_lancet)
export(pal_npg)
export(pal_rickandmorty)
export(pal_simpsons)
export(pal_uchicago)
export(pal_ucscgb)
export(rgb_gsea)
export(scale_color_aaas)
export(scale_color_d3)
export(scale_color_futurama)
export(scale_color_gsea)
export(scale_color_jco)
export(scale_color_lancet)
export(scale_color_npg)
Expand All @@ -17,6 +24,9 @@ export(scale_color_simpsons)
export(scale_color_uchicago)
export(scale_color_ucscgb)
export(scale_colour_aaas)
export(scale_colour_d3)
export(scale_colour_futurama)
export(scale_colour_gsea)
export(scale_colour_jco)
export(scale_colour_lancet)
export(scale_colour_npg)
Expand All @@ -25,6 +35,9 @@ export(scale_colour_simpsons)
export(scale_colour_uchicago)
export(scale_colour_ucscgb)
export(scale_fill_aaas)
export(scale_fill_d3)
export(scale_fill_futurama)
export(scale_fill_gsea)
export(scale_fill_jco)
export(scale_fill_lancet)
export(scale_fill_npg)
Expand All @@ -33,6 +46,9 @@ export(scale_fill_simpsons)
export(scale_fill_uchicago)
export(scale_fill_ucscgb)
importFrom(ggplot2,discrete_scale)
importFrom(ggplot2,scale_color_gradientn)
importFrom(ggplot2,scale_fill_gradientn)
importFrom(grDevices,col2rgb)
importFrom(grDevices,colorRamp)
importFrom(grDevices,rgb)
importFrom(scales,manual_pal)
10 changes: 10 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,13 @@
* UChicago
* Simpsons
* Rick and Morty

# CHANGES IN ggsci VERSION 2.0 (2016-11-20)

## NEW FEATURES

* Two new discrete color palettes:
* D3 color palette
* Futurama color palette
* The first continuous color palette:
* GSEA GenePattern color palette
127 changes: 127 additions & 0 deletions R/continuous.01.gsea.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#' The GSEA GenePattern Color Palettes
#'
#' Color palette inspired by the colors used in the
#' heatmaps plotted by GSEA GenePattern.
#'
#' @param palette Palette type.
#' Currently there is one available option: \code{"default"}
#' (continuous palette with 12 base colors).
#' @param n Number of individual colors to be generated.
#' @param alpha Transparency level, a real number in (0, 1].
#' See \code{alpha} in \code{\link[grDevices]{rgb}} for details.
#' @param reverse Logical. Should the order of the colors be reversed?
#'
#' @export rgb_gsea
#'
#' @importFrom grDevices colorRamp rgb
#' @importFrom scales manual_pal
#'
#' @author Nan Xiao <\email{me@@nanx.me}> |
#' <\href{http://nanx.me}{http://nanx.me}>
#'
#' @note The 12 base colors used in this palette are derived from
#' \href{ftp://ftp.broad.mit.edu/pub/genepattern/modules/HeatMapImage/broad.mit.edu:cancer.software.genepattern.module.analysis/00032/6/HeatMapImage.pdf}{this document}.
#'
#' @examples
#' library("scales")
#' show_col(pal_gsea("default")(12))
#' show_col(pal_gsea("default", n = 30, alpha = 0.6, reverse = TRUE)(30))
rgb_gsea = function (palette = c('default'), n = 12,
alpha = 1, reverse = FALSE) {

palette = match.arg(palette)

if (alpha > 1L | alpha <= 0L) stop('alpha must be in (0, 1]')

raw_cols = ggsci_db$'gsea'[[palette]]
func_cols = colorRamp(raw_cols, space = 'Lab', interpolate = 'spline')
mat_cols = func_cols(seq(0L, 1L, length.out = n))
alpha_cols = rgb(mat_cols[, 1L], mat_cols[, 2L], mat_cols[, 3L],
alpha = alpha * 255L, maxColorValue = 255L)

if (reverse) alpha_cols = rev(alpha_cols)

alpha_cols

}

#' The GSEA GenePattern Color Palettes
#'
#' Color palette inspired by the colors used in the
#' heatmaps plotted by GSEA GenePattern.
#'
#' @inheritParams rgb_gsea
#'
#' @export pal_gsea
#'
#' @importFrom scales manual_pal
#'
#' @author Nan Xiao <\email{me@@nanx.me}> |
#' <\href{http://nanx.me}{http://nanx.me}>
#'
#' @examples
#' library("scales")
#' show_col(pal_gsea("default")(12))
#' show_col(pal_gsea("default", n = 30, alpha = 0.6, reverse = TRUE)(30))
pal_gsea = function (palette = c('default'), n = 12,
alpha = 1, reverse = FALSE) {

palette = match.arg(palette)

alpha_cols = rgb_gsea(palette, n, alpha, reverse)
manual_pal(unname(alpha_cols))

}

#' The GSEA GenePattern Color Scales
#'
#' See \code{\link{pal_gsea}} for details.
#'
#' @inheritParams pal_gsea
#' @param ... additional parameters for \code{\link[ggplot2]{discrete_scale}}
#'
#' @export scale_color_gsea
#'
#' @importFrom ggplot2 scale_color_gradientn
#'
#' @author Nan Xiao <\email{me@@nanx.me}> |
#' <\href{http://nanx.me}{http://nanx.me}>
#'
#' @rdname scale_gsea
#'
#' @examples
#' library("ggplot2")
#' library("reshape2")
#' data("mtcars")
#'
#' cor = cor(mtcars)
#' cor_melt = melt(cor)
#'
#' ggplot(cor_melt,
#' aes(x = Var1, y = Var2, fill = value)) +
#' geom_tile(colour = "black", size = 0.3) +
#' theme_bw() + scale_fill_gsea()
scale_color_gsea = function (palette = c('default'),
alpha = 1, reverse = FALSE, ...) {

palette = match.arg(palette)
scale_color_gradientn(colours = rgb_gsea(palette, n = 512, alpha = alpha,
reverse = reverse), ...)

}

#' @export scale_colour_gsea
#' @rdname scale_gsea
scale_colour_gsea = scale_color_gsea

#' @export scale_fill_gsea
#' @importFrom ggplot2 scale_fill_gradientn
#' @rdname scale_gsea
scale_fill_gsea = function (palette = c('default'), alpha = 1,
reverse = FALSE, ...) {

palette = match.arg(palette)
scale_fill_gradientn(colours = rgb_gsea(palette, n = 512, alpha = alpha,
reverse = reverse), ...)

}
2 changes: 1 addition & 1 deletion R/01.npg.R → R/discrete.01.npg.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ pal_npg = function (palette = c('nrc'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_npg()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
2 changes: 1 addition & 1 deletion R/02.aaas.R → R/discrete.02.aaas.R
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ pal_aaas = function (palette = c('default'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_aaas()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
2 changes: 1 addition & 1 deletion R/03.lancet.R → R/discrete.03.lancet.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ pal_lancet = function (palette = c('lanonc'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_lancet()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
2 changes: 1 addition & 1 deletion R/04.jco.R → R/discrete.04.jco.R
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ pal_jco = function (palette = c('default'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_jco()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
2 changes: 1 addition & 1 deletion R/05.ucscgb.R → R/discrete.05.ucscgb.R
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ pal_ucscgb = function (palette = c('default'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_ucscgb()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
114 changes: 114 additions & 0 deletions R/discrete.06.d3.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#' D3.js Color Palettes
#'
#' Color palettes based on the colors used by D3.js.
#'
#' @param palette Palette type.
#' There are 4 available options:
#' \code{"category10"} (10-color palette);
#' \code{"category20"} (20-color palette);
#' \code{"category20b"} (20-color palette);
#' \code{"category20c"} (20-color palette).
#' @param alpha Transparency level, a real number in (0, 1].
#' See \code{alpha} in \code{\link[grDevices]{rgb}} for details.
#'
#' @export pal_d3
#'
#' @importFrom grDevices col2rgb rgb
#' @importFrom scales manual_pal
#'
#' @author Nan Xiao <\email{me@@nanx.me}> |
#' <\href{http://nanx.me}{http://nanx.me}>
#'
#' @references \url{https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md}
#'
#' @examples
#' library("scales")
#' show_col(pal_d3("category10")(10))
#' show_col(pal_d3("category20")(20))
#' show_col(pal_d3("category20b")(20))
#' show_col(pal_d3("category20c")(20))
pal_d3 = function (palette = c('category10', 'category20',
'category20b', 'category20c'), alpha = 1) {

palette = match.arg(palette)

if (alpha > 1L | alpha <= 0L) stop('alpha must be in (0, 1]')

raw_cols = ggsci_db$'d3'[[palette]]
raw_cols_rgb = col2rgb(raw_cols)
alpha_cols = rgb(raw_cols_rgb[1L, ], raw_cols_rgb[2L, ], raw_cols_rgb[3L, ],
alpha = alpha * 255L, names = names(raw_cols),
maxColorValue = 255L)

manual_pal(unname(alpha_cols))

}

#' D3.js Color Scales
#'
#' See \code{\link{pal_d3}} for details.
#'
#' @inheritParams pal_d3
#' @param ... additional parameters for \code{\link[ggplot2]{discrete_scale}}
#'
#' @export scale_color_d3
#'
#' @importFrom ggplot2 discrete_scale
#'
#' @author Nan Xiao <\email{me@@nanx.me}> |
#' <\href{http://nanx.me}{http://nanx.me}>
#'
#' @references \url{https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md}
#'
#' @rdname scale_d3
#'
#' @examples
#' library("ggplot2")
#' data("diamonds")
#'
#' p1 = ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw()
#'
#' p2 = ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
#' aes(x = depth, fill = cut)) +
#' geom_histogram(colour = "black", binwidth = 1, position = "dodge") +
#' theme_bw()
#'
#' p1 + scale_color_d3()
#' p2 + scale_fill_d3()
#'
#' p1 + scale_color_d3(palette = "category20")
#' p2 + scale_fill_d3(palette = "category20")
#'
#' p1 + scale_color_d3(palette = "category20b")
#' p2 + scale_fill_d3(palette = "category20b")
#'
#' p1 + scale_color_d3(palette = "category20c")
#' p2 + scale_fill_d3(palette = "category20c")
scale_color_d3 = function (palette = c('category10', 'category20',
'category20b', 'category20c'),
alpha = 1, ...) {

palette = match.arg(palette)
discrete_scale('colour', 'd3', pal_d3(palette, alpha), ...)

}

#' @export scale_colour_d3
#' @rdname scale_d3
scale_colour_d3 = scale_color_d3

#' @export scale_fill_d3
#' @importFrom ggplot2 discrete_scale
#' @rdname scale_d3
scale_fill_d3 = function (palette = c('category10', 'category20',
'category20b', 'category20c'),
alpha = 1, ...) {

palette = match.arg(palette)
discrete_scale('fill', 'd3', pal_d3(palette, alpha), ...)

}
2 changes: 1 addition & 1 deletion R/06.uchicago.R → R/discrete.07.uchicago.R
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pal_uchicago = function (palette = c('default', 'light', 'dark'), alpha = 1) {
#' p1 = ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw()
#'
#' p2 = ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
2 changes: 1 addition & 1 deletion R/07.simpsons.R → R/discrete.08.simpsons.R
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ pal_simpsons = function (palette = c('springfield'), alpha = 1) {
#' ggplot(subset(diamonds, carat >= 2.2),
#' aes(x = table, y = price, colour = cut)) +
#' geom_point(alpha = 0.7) +
#' geom_smooth(alpha = 0.1, size = 1, span = 1) +
#' geom_smooth(method = "loess", alpha = 0.1, size = 1, span = 1) +
#' theme_bw() + scale_color_simpsons()
#'
#' ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
Expand Down
Loading

0 comments on commit 407ec4f

Please sign in to comment.