---
title: "Beautiful colormaps for oceanography: cmocean"
output:
  rmarkdown::html_vignette:
    mathjax: NULL
vignette: >
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteIndexEntry{Beautiful colormaps for oceanography: cmocean}
  %\VignetteEncoding{UTF-8}
---

This package contains an R version of the [`cmocean`](https://matplotlib.org/cmocean/) color palettes for oceanography, developed originally for python by Kristen Thyng. The important detail of all the `cmocean` palettes is that they are all perceptually uniform.

Users interested in the the details of the original package development should consult the publication: [Thyng, K. M., Greene, C. A., Hetland, R. D., Zimmerle, H. M., & DiMarco, S. F. (2016). True colors of oceanography. Oceanography, 29(3), 10.][1]

[1]: https://tos.org/oceanography/assets/docs/29-3_thyng.pdf

Examples:
=========

```{r, echo = FALSE}
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```

The functions that return the colors are accessed using the `cmocean()` function, where the first argument is the name of the desired palette.

We can make a simple function to display the palette colors:
```{r}
library(cmocean)
plot_cm <- function(name, n=256) {
    z <- matrix(seq(0, 1, length.out=n))
    image(z, col=cmocean(name)(n), axes=FALSE)
    mtext(name, 3, adj=0)
}
```

Below are examples of each of the `cmocean` palettes. Many more examples are provided at https://matplotlib.org/cmocean/

palettes
--------

```{r echo=FALSE}
pal <- c('algae', 'amp', 'balance', 'diff',
         'gray', 'curl', 'deep', 'delta',
         'dense', 'haline', 'ice', 'matter',
         'oxy', 'phase', 'rain', 'solar',
         'speed', 'tarn', 'tempo', 'thermal',
         'topo', 'turbid')
opar <- par(no.readonly=TRUE)
par(mfrow=c(6, 1), mar=c(0.5, 0.5, 1.5, 0.5))
for (i in seq_along(pal)) {
    plot_cm(pal[i])
}
par(mfrow=c(1, 1))
par(opar)
```

Data examples:
--------------

```{r}
par(mar=c(2, 2, 1, 1), cex=0.5)
image(volcano, col=cmocean('thermal')(256))
```
```{r}
par(mar=c(2, 2, 1, 1), cex=0.5)
x <- y <- seq(-4*pi, 4*pi, len = 27)
r <- sqrt(outer(x^2, y^2, "+"))
image(z = z <- cos(r^2)*exp(-r/6), col  = cmocean('haline')(256))
```