-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
45 changed files
with
1,060 additions
and
155 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
@@ -19,5 +21,6 @@ Imports: | |
Suggests: | ||
knitr, | ||
rmarkdown, | ||
gridExtra | ||
gridExtra, | ||
reshape2 | ||
RoxygenNote: 5.0.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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), ...) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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), ...) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.