海洋学专用美观色彩映射:cmocean

此软件包包含常用海洋变量的色彩映射。大多数色彩映射最初来自 matplotlib 色彩映射,但现在已使用 viscm 工具进行调整,以实现 感知均匀

注意

这是 cmocean 的新版本,包含四个新的色彩映射!

注意

我们有一篇论文,其中包含针对您的应用选择色彩映射的指南以及对 cmocean 色彩映射的描述

Thyng, K. M., Greene, C. A., Hetland, R. D., Zimmerle, H. M., & DiMarco, S. F. (2016). True colors of oceanography. Oceanography, 29(3), 10.

链接:http://tos.org/oceanography/assets/docs/29-3_thyng.pdf

这是我们的图库

import cmocean
cmocean.plots.plot_gallery()

(源代码pnghires.pngpdf)

_images/index-1.png

选择这些色彩映射是为了实现感知均匀,并以顺序、发散或循环(相位色彩映射)的形式反映它们所代表的数据,并具有直观性。例如,algae 色彩映射是绿色的阴影,可以代表叶绿素。

这是色彩映射的亮度

import cmocean
cmocean.plots.plot_lightness()

(源代码pnghires.pngpdf)

_images/index-2.png

最好用 cam02ucs 色彩空间来思考,其中欧几里得距离等效于人类感知中的变化。使用 viscm 工具可以看到此色彩空间中这些色彩映射的图以及其他一些重要属性。

以下是 haline 色彩映射的一些属性。我们可以看到,该色彩映射可以很好地打印为灰度,在整个色彩映射中具有一致的感知差异,并且对色盲人士具有良好的可视性。它在 3D 色彩空间中具有平滑的表示,并且图像中的细节清晰可见。

import cmocean
cmocean.plots.wrap_viscm(cmocean.cm.haline, saveplot=False)

(源代码pnghires.pngpdf)

_images/index-3.png

使用 viscm 工具对色彩映射的所有评估都显示在 viscm 工具中的 cmocean 色彩映射页面中。

安装

要安装:pip install cmocean

要使用 Anaconda 安装:conda install -c conda-forge cmocean

如果要使用 plots 子模块,则可以使用以下命令安装:

pip install "cmocean[plots]"

这也会安装 viscmcolorspacious

功能

所有色彩映射都在 cmocean.cm 中可用。可以访问它们并按如下方式简单地绘制它们

import cmocean
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 3))
ax = fig.add_subplot(1, 2, 1)
cmocean.plots.test(cmocean.cm.thermal, ax=ax)
ax = fig.add_subplot(1, 2, 2)
cmocean.plots.quick_plot(cmocean.cm.algae, ax=ax)

(源代码pnghires.pngpdf)

_images/index-4.png

可以使用 cmocean.cm.cmapnames 访问所有可用的色彩映射名称

In [1]: import cmocean

In [2]: cmocean.cm.cmapnames
Out[2]: 
['thermal',
 'haline',
 'solar',
 'ice',
 'gray',
 'oxy',
 'deep',
 'dense',
 'algae',
 'matter',
 'turbid',
 'speed',
 'amp',
 'tempo',
 'rain',
 'phase',
 'topo',
 'balance',
 'delta',
 'curl',
 'diff',
 'tarn']

可以使用以下方式访问色彩映射实例

In [3]: import cmocean

In [4]: cmaps = cmocean.cm.cmap_d;

使用 256 个 rgb 条目将所有可用的色彩映射打印到文本文件中,使用以下命令:

cmaps = cmocean.cm.cmap_d

cmocean.tools.print_colormaps(cmaps)

输出一个字典来定义色彩映射,使用以下命令:

In [5]: import cmocean

In [6]: cmdict = cmocean.tools.get_dict(cmocean.cm.matter, N=9)

In [7]: print(cmdict)
{'red': [(0.0, 0.99429361496112023, 0.99429361496112023), (0.125, 0.97669801635856757, 0.97669801635856757), (0.25, 0.94873479766923496, 0.94873479766923496), (0.375, 0.90045567698531204, 0.90045567698531204), (0.5, 0.80852468744463613, 0.80852468744463613), (0.625, 0.67108411902889908, 0.67108411902889908), (0.75, 0.51122751026810531, 0.51122751026810531), (0.875, 0.34246319725680402, 0.34246319725680402), (1.0, 0.18517171283533682, 0.18517171283533682)], 'green': [(0.0, 0.93032779532320797, 0.93032779532320797), (0.125, 0.75576791099973906, 0.75576791099973906), (0.25, 0.58413112562241909, 0.58413112562241909), (0.375, 0.41389524263548055, 0.41389524263548055), (0.5, 0.26372603126828165, 0.26372603126828165), (0.625, 0.16249519232276352, 0.16249519232276352), (0.75, 0.10922326738769267, 0.10922326738769267), (0.875, 0.089677516287552023, 0.089677516287552023), (1.0, 0.05913348735199072, 0.05913348735199072)], 'blue': [(0.0, 0.69109690224984077, 0.69109690224984077), (0.125, 0.53031307900834646, 0.53031307900834646), (0.25, 0.40291681995676154, 0.40291681995676154), (0.375, 0.32938102171259315, 0.32938102171259315), (0.5, 0.33885361881305626, 0.33885361881305626), (0.625, 0.37820659039971588, 0.37820659039971588), (0.75, 0.38729596513525039, 0.38729596513525039), (0.875, 0.33739313395770171, 0.33739313395770171), (1.0, 0.24304267442183591, 0.24304267442183591)]}

使用 rgb 输入数组,使用 cmap = cmocean.tools.cmap(rgbin, N=10) 创建色彩映射实例。

可以通过在色彩映射名称后附加“_r”来获得所有色彩映射的反转版本,就像在 matplotlib 中一样

import cmocean
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 3))
ax = fig.add_subplot(1, 2, 1)
cmocean.plots.test(cmocean.cm.gray, ax=ax)
ax = fig.add_subplot(1, 2, 2)
cmocean.plots.test(cmocean.cm.gray_r, ax=ax)
fig.tight_layout()

(源代码pnghires.pngpdf)

_images/index-5.png

您可以使用小于 1 的 alpha 值使用 cmocean.tools.lighten() 函数来减轻色彩映射,以便可以覆盖轮廓和其他更易于看到的线条

import cmocean
import cmocean.cm as cmo
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 3))
ax = fig.add_subplot(1, 2, 1)
Z = np.random.randn(10,10)
ax.pcolormesh(Z, cmap=cmo.matter)

ax = fig.add_subplot(1, 2, 2)
lightcmap = cmocean.tools.lighten(cmo.matter, 0.5)
ax.pcolormesh(Z, cmap=lightcmap)
fig.tight_layout()

(源代码pnghires.pngpdf)

_images/index-6.png

cmocean 将使用 matplotlib 注册其色彩映射,因此您可以使用例如“cmo.amp”来调用它们

import cmocean
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(4, 3))
ax = fig.add_subplot(111)
Z = np.random.randn(10,10)
ax.pcolormesh(Z, cmap='cmo.amp')

(源代码pnghires.pngpdf)

_images/index-7.png

裁剪色彩映射

您可以按您打算绘制的值或按百分比裁剪掉色彩映射的一端或两端。例如,您可以按百分比裁剪掉色彩映射的两端,以减少亮度范围,并且不具有最暗的值

import cmocean
import matplotlib.pyplot as plt

cmap = cmocean.cm.tarn
fig, axes = plt.subplots(1, 2, figsize=(8,4))
A = np.random.randint(-5, 6, (10,10))
mappable = axes[0].pcolormesh(A, cmap=cmap)
axes[0].set_title('Full diverging colormap')
fig.colorbar(mappable, ax=axes[0])

newcmap = cmocean.tools.crop_by_percent(cmap, 30, which='both', N=None)
mappable = axes[1].pcolormesh(A, cmap=newcmap)
axes[1].set_title('Same colormap,\n30% removed from each end')
fig.colorbar(mappable, ax=axes[1])

(源代码pnghires.pngpdf)

_images/index-8.png

您可以按百分比裁剪掉色彩映射的一端。例如,您可以裁剪掉 oxy 色彩映射的顶部部分,以防您不考虑过饱和条件(色彩映射的顶部 20%),您可以按如下方式将其从色彩映射中删除

import cmocean
import matplotlib.pyplot as plt

cmap = cmocean.cm.oxy
fig, axes = plt.subplots(1, 2, figsize=(8,4))
A = np.random.randint(0, 101, (10,10))
mappable = axes[0].pcolormesh(A, vmin=0, vmax=100, cmap=cmap)
axes[0].set_title('Values go to super-saturated')
fig.colorbar(mappable, ax=axes[0])

newcmap = cmocean.tools.crop_by_percent(cmap, 20, which='max', N=None)
A[A>80] = 80
mappable = axes[1].pcolormesh(A, vmin=0, vmax=80, cmap=newcmap)
axes[1].set_title('Values are all\nbelow super-saturated')
fig.colorbar(mappable, ax=axes[1])

(源代码pnghires.pngpdf)

_images/index-9.png

您可以通过输入您打算在绘图中使用值来删除色彩映射一端的一部分,并让函数找出要从色彩映射中裁剪掉多少。如果您已将海底地形和陆地地形(海洋和陆地海拔)数据组合在一起以使用 topo 色彩映射进行绘制,但您希望水和陆地的最大量级不同,并在色彩映射中反映这一点,则这可能特别有用。

import cmocean
import matplotlib.pyplot as plt

cmap = cmocean.cm.topo
fig, axes = plt.subplots(1, 2, figsize=(8,4))
A = np.random.randint(-50, 201, (10,10))
mappable = axes[0].pcolormesh(A, vmin=-200, vmax=200, cmap=cmap)
axes[0].set_title('No values<-50, but still\nshow possibility in colorbar')
fig.colorbar(mappable, ax=axes[0])

newcmap = cmocean.tools.crop(cmap, -50, 200, 0)
mappable = axes[1].pcolormesh(A, vmin=-50, vmax=200, cmap=newcmap)
axes[1].set_title('Colorbar only shows color\nrange used by data')
fig.colorbar(mappable, ax=axes[1])

(源代码pnghires.pngpdf)

_images/index-10.png

色彩映射详细信息

thermal

thermal 色彩映射是顺序的,深蓝色代表较低、较冷的值,并逐渐过渡到红色,黄色代表增加的较暖的值。

http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_water_temp.png

来自德克萨斯 A&M 大学地球化学和环境研究小组(GERG)的滑翔机数据。

https://media.springernature.com/m685/springer-static/image/art%3A10.1038%2Fs41598-017-16760-0/MediaObjects/41598_2017_16760_Fig5_HTML.jpg

来自出版物的数据:Kenel, C., Grolimund, D., Li, X., Panepucci, E., Samson, V. A., Sanchez, D. F., … & Leinenbach, C. (2017). In situ investigation of phase transformations in Ti-6Al-4V under additive manufacturing conditions combining laser melting and high-speed micro-X-ray diffraction. Scientific reports, 7(1), 16358.

http://www.mdpi.com/sensors/sensors-17-02679/article_deploy/html/images/sensors-17-02679-g002-550.jpg

Usamentiaga, R., Ibarra-Castanedo, C., Klein, M., Maldague, X., Peeters, J., & Sanchez-Beato, A. (2017). Nondestructive evaluation of carbon fiber bicycle frames using infrared thermography. Sensors, 17(11), 2679.

https://user-images.githubusercontent.com/3487237/42728531-d732b9ee-8781-11e8-90da-6f54007fe142.png

上层海洋的 CTD 数据温度图;由 Luz Zarate Jimenez 制作。

https://user-images.githubusercontent.com/3487237/42728546-16b3a448-8782-11e8-8971-f1e11631645d.png

完整水深瓶数据的 pH 值图,其中点表示收集瓶装水的深度;由 Luz Zarate Jimenez 制作。

https://www.tandfonline.com/na101/home/literatum/publisher/tandf/journals/content/zela20/2018/zela20.v070.i01/16000870.2018.1471911/20180605/images/large/zela_a_1471911_f0001_c.jpeg

WUNSCH, C. (2018). Towards determining uncertainties in global oceanic mean values of heat, salt, and surface elevation. Tellus A: Dynamic Meteorology and Oceanography, 70(1), 1-14.

https://pbs.twimg.com/media/Cxjs6Z8WQAAc_uX.jpg

Maarten Reyniers 显示气象工作中的温度。

https://pbs.twimg.com/media/CxtJS8eW8AEGmIm.jpg

NASA OBPG 的 MODIS 海面温度,由 Sebastian Steinke 提供。

https://data.ioos.us/gliders/status/summary/static/profiles/drudnick/sp069-20181109T1607/temperature.png

来自大西洋中部区域协会沿海海洋观测系统(MARACOOS)的滑翔机数据。

https://www.tecplot.com/wp-content/gallery/geoscience/pugetsound_webimage.jpg

来自 tecplot 的海洋模型可视化。

https://ars.els-cdn.com/content/image/1-s2.0-S0967063718301638-gr2.jpg

Potter, H. (2018). The cold wake of typhoon Chaba (2010). Deep Sea Research Part I: Oceanographic Research Papers, 140, 136-141.

haline

haline 色彩映射是顺序的,可能会使用深蓝色代表较低的盐度或淡水,逐渐过渡到绿色,浅黄色代表增加的盐度或咸水。此色彩映射基于 matplotlib 的 YlGnBu,但使用 viscm 工具从头开始重新创建。

http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/calc_salinity.png

来自德克萨斯 A&M 大学地球化学和环境研究小组(GERG)的滑翔机数据。

http://pong.tamu.edu/~kthyng/movies/txla_plots/salt/2010-07-30T00.png

德克萨斯 A&M 大学物理海洋学数值组(PONG)在墨西哥西北部湾的模型输出。

http://clarkrichards.org/figure/source/2016-04-25-making-section-plots/plot2-1.png

使用 R oce 包绘制 CTD 数据(温度和盐度),作者:Clark Richards

https://user-images.githubusercontent.com/3487237/42728526-cd276e68-8781-11e8-9d77-db486b479a6d.png

完整水深瓶数据的碱度图,其中点表示收集瓶装水的深度;由 Luz Zarate Jimenez 制作。

https://user-images.githubusercontent.com/3487237/42728535-df605f5e-8781-11e8-973e-0f7385daef3c.png

上层海洋的 CTD 数据盐度图;由 Luz Zarate Jimenez 制作。

https://data.ioos.us/gliders/status/summary/static/profiles/drudnick/sp069-20181109T1607/salinity.png

来自大西洋中部区域协会沿海海洋观测系统(MARACOOS)的滑翔机数据。

solar

solar 色彩映射是顺序的,从低值的深棕色到逐渐明亮的黄色,可能代表水中辐射的增加。

https://plot.ly/~empet/13620.png

来自 plotly 的直方图。

ice

ice 色彩映射是顺序的,从非常深的蓝色(几乎黑色)到非常浅的蓝色(几乎白色)。此色彩映射的用途可能是表示海冰。

http://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/50126/versions/4/previews/seaice/html/SeaIceTimeSeries_20160620.gif

Chad Greene 提供了一个示例,显示了南极洲周围的海冰浓度。

https://media.giphy.com/media/26xBFRODTXDBKSmVa/giphy.gif

Nikolay Koldunov 提供的北极海冰厚度。

gray

gray 色彩映射是顺序的,从黑色到白色,在感知色彩空间中具有均匀的步长。此色彩映射是通用的,可用于任何顺序数据集。

import cmocean
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 3))
ax = fig.add_subplot(1, 2, 1)
cmocean.plots.test(cmocean.cm.gray, ax=ax)
ax = fig.add_subplot(1, 2, 2)
cmocean.plots.quick_plot(cmocean.cm.gray, ax=ax)

(源代码pnghires.pngpdf)

_images/index-11.png

oxy

oxy 色彩映射在大多数情况下是顺序的,代表海水中正常的氧气饱和度范围,并在色彩映射 80% 的位置发散,以代表过饱和状态。色彩映射的底部 20% 为红色,以突出显示低氧或缺氧水域,但为了在应用程序中红色色调不重要的情况下,仍能相对无缝地打印为灰度。发散后,色彩映射的顶部 20% 为黄色,以突出显示过饱和的水。此色彩映射的最小值和最大值旨在控制,以便正确放置低氧和过饱和氧状态。此色彩映射是为密西西比河羽流区域开发的,在该区域中,经常看到并监测低氧和过饱和条件。

https://cloud.githubusercontent.com/assets/3487237/16996267/85ac01ea-4e7e-11e6-9801-ee97f7e65940.png

德克萨斯A&M大学物理海洋学数值小组 (PONG) 在墨西哥西北湾的模式输出。使用简单的底部氧利用参数化模拟的底部氧气显示了底部氧气的复杂结构。虽然受缺氧影响的区域沿陆架延伸近 400 公里,但在小得多的尺度上(小至几公里)也存在变异。密西西比河/阿查法拉亚河羽流的位置以及羽流中存在的不稳定性决定了缺氧底层水的范围和结构。作者是德克萨斯A&M大学的维罗妮卡·鲁伊斯

https://user-images.githubusercontent.com/3487237/42728540-0d24e28e-8782-11e8-8874-82e65d76ef34.png

上层海洋的CTD数据氧气图;由Luz Zarate Jimenez制作。

深色

deep 色彩图从浅黄色开始,可能代表较浅的水,经过淡绿色,逐渐变为深蓝色和紫色,代表深度增加。

https://cloud.githubusercontent.com/assets/3487237/16900541/4af66c4c-4bf5-11e6-92a9-82eaa39cb18b.png

测深图,由Iury Sousa制作

https://user-images.githubusercontent.com/3487237/42728981-de0d3ee4-878e-11e8-89ca-b124c49d5d0e.png

索莫夫海测深图,由Josué Martinez Moreno使用blender制作

https://media.springernature.com/lw900/springer-static/image/art%3A10.1038%2Fs41467-018-05618-2/MediaObjects/41467_2018_5618_Fig1_HTML.png

Gwyther, D. E., O’Kane, T. J., Galton-Fenzi, B. K., Monselesan, D. P., & Greenbaum, J. S. (2018). Intrinsic processes drive variability in basal melting of the Totten Glacier Ice Shelf. Nature communications, 9(1), 3141.

密集

dense 色彩图是连续的,低值使用淡蓝色,随着值的增加逐渐变为紫色,这可以用来表示水密度的增加。下面显示了两个来自德克萨斯A&M大学滑翔机的此色彩图示例。此色彩图基于 matplotlib 的 Purples,但使用 viscm 工具从头开始重新创建。

http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/calc_density.png
https://user-images.githubusercontent.com/3487237/42728541-11ed4d7e-8782-11e8-945c-1e2dcdb61ace.png

上层海洋CTD数据的潜在密度图;由Luz Zarate Jimenez制作。

http://www.sfestuary.org/wp-content/uploads/2012/09/nut-500model_nh4-landsatgray.jpg

旧金山湾的估计铵浓度,作者是Rusty Holleman。

藻类

algae 色彩图是连续的,低值使用淡绿色,随着值的增加逐渐变为绿色,这可以用来表示水中叶绿素的增加。下面显示了两个来自德克萨斯A&M大学滑翔机的此色彩图示例。此色彩图基于 matplotlib 的 Greens,但使用 viscm 工具从头开始重新创建。

http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_flbbcd_chlor_units.png
https://rbr-global.com/wp-content/uploads/2016/09/WireWalker_data_wide_zoom.png

RBR Del Mar Oceanographic (DMO) Wirewalker的示例数据,这是一个波浪驱动的剖面系统。

https://pbs.twimg.com/media/Cs_3GXbXgAAPwFQ.png

卫星衍生的叶绿素a,并标示了站点,作者是Frankie Pavia。

物质

matter 色彩图是连续的,低值使用淡黄色,随着值的增加逐渐变为粉红色,可以用来表示水中物质的增加。下面显示了两个来自德克萨斯A&M大学滑翔机的此色彩图示例。

http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_flbbcd_cdom_units.png
http://www.sfestuary.org/wp-content/uploads/2012/09/Nut-model_din-landsatgray-500.jpg

旧金山湾的估计溶解氮,作者是Rusty Holleman。

浑浊

turbid 色彩图从浅棕色到深棕色连续变化,可用于表示水中沉积物的增加。

https://user-images.githubusercontent.com/3487237/42729003-c604db6c-878f-11e8-97e8-978d6c172f3e.png

昆士兰数据,作者是Emilia P. (@mathinpython)。

速度

speed 色彩图从代表低值的浅绿黄色连续过渡到代表高值的深黄绿色。此色彩图是 delta 色彩图的正半部分。此色彩图的一个示例来自德克萨斯州和路易斯安那州陆架的数值模拟。

http://pong.tamu.edu/~kthyng/movies/txla_plots/speed/2010-07-30T00.png

振幅

amp 色彩图从淡白色到深红色连续变化,可以用来表示波高值的增加。此色彩图是 balance 色彩图的正半部分。

https://cloud.githubusercontent.com/assets/3487237/16920916/840d91d4-4cdd-11e6-8db5-f93cd61b78c2.png

地震震级,由Natalie Accardo使用GMT制作。

https://media.springernature.com/lw900/springer-static/image/art%3A10.1038%2Fs41598-018-35936-w/MediaObjects/41598_2018_35936_Fig2_HTML.png

Baumgartner, B. L., O’Laughlin, R., Jin, M., Tsimring, L. S., Hao, N., & Hasty, J. (2018). Flavin-based metabolic cycles are integral features of growth and division in single yeast cells. Scientific reports, 8(1), 18045.

https://www.frontiersin.org/files/Articles/422317/fmars-05-00447-HTML/image_m/fmars-05-00447-g004.jpg

Lenhart, H. J., & Große, F. (2018). Assessing the effects of WFD nutrient reductions within an OSPAR frame using trans-boundary nutrient modeling. Frontiers in Marine Science, 5, 447.

https://ars.els-cdn.com/content/image/1-s2.0-S0380133018301321-gr4_lrg.jpg

Grunert, B. K., Brunner, S. L., Hamidi, S. A., Bravo, H. R., & Klump, J. V. (2018). Quantifying the influence of cold water intrusions in a shallow, coastal system across contrasting years: Green Bay, Lake Michigan. Journal of Great Lakes Research, 44(5), 851-863.

时间

tempo 色彩图从淡白色到深青色连续变化,可以用来表示波周期值的增加。此色彩图是 curl 色彩图的负半部分。

http://www.sfestuary.org/wp-content/uploads/2012/09/nut500-model_no3-landsatgray.png

旧金山湾的估计硝酸盐,作者是Rusty Holleman。

雨水

rain 色彩图从浅色、干燥的颜色到蓝色、湿润的颜色连续变化,可用于绘制降雨量。

https://user-images.githubusercontent.com/3487237/51001559-092d8800-14f6-11e9-93d4-57379b4c7701.png

降雨量,由Chad Greene制作。

相位

phase 色彩图是循环的,在设定的亮度值上跨越所有色调。此图旨在用于诸如波浪相位和潮汐相位之类的属性,这些属性从 0° 环绕到 360° 再到 0°,并且应该在色彩图中没有主要的感知跳跃的情况下表示。

https://user-images.githubusercontent.com/3487237/42728991-41ed6e0c-878f-11e8-80ad-4623b26de2cc.png

北大西洋的潮汐相位,由Kristen Thyng制作。

地形

topo 色彩图有两个不同的部分:一部分是蓝色和黄色的阴影,表示水深(这是 deep 色彩图),另一部分是棕色和绿色的阴影,表示陆地海拔。

https://user-images.githubusercontent.com/3487237/51001557-0894f180-14f6-11e9-9f8e-94fc0ffcfe11.png

测深和地形图,由Chad Greene制作。

平衡

balance 色彩图是发散的,深蓝色到灰白色到深红色表示负值到零值到正值;这可以用来表示海平面高度,海平面高度的偏差使用与中性灰白色不同的颜色阴影表示。在这种情况下,选择红色阴影来表示高于参考值(通常是平均海平面)的海平面高度,以便与通常与自由表面增加相关的较暖水域联系起来,例如墨西哥湾的环流。此色彩图的一个示例来自德克萨斯州和路易斯安那州陆架的数值模拟。此色彩图基于 matplotlib 的 RdBu,但使用 viscm 工具从头开始重新创建。

http://pong.tamu.edu/~kthyng/movies/txla_plots/ssh/2010-07-30T00.png
https://pbs.twimg.com/media/CsWzox7UsAAeKwS.jpg

空间时间海洋学查询系统 (STOQS)

增量

delta 色彩图从较深的蓝色发散到略微偏白的颜色,再经过黄绿色的阴影,可用于表示围绕临界值(通常为零)发散的速度值。此色彩图的灵感来自Francesca Samsel的类似色彩图,但使用 viscm 工具从头开始生成。

https://pbs.twimg.com/media/CkIWDFRWkAEdArC.jpg

来自plotly。

http://pong.tamu.edu/~kthyng/movies/txla_plots/u/2010-07-30T00.png

德克萨斯 A&M 大学物理海洋学数值组(PONG)在墨西哥西北部湾的模型输出。

旋度

curl 色彩图从较深的青色发散到略微偏白的颜色,再经过品红色的阴影,可用于表示围绕临界值(通常为零)发散的涡度值。

http://pong.tamu.edu/~kthyng/movies/txla_plots/vort/2010-07-30T00.png

此色彩图的一个示例来自德克萨斯州和路易斯安那州陆架的数值模拟。

https://pbs.twimg.com/media/CuqlwdJWIAA1wT1.jpg

差异

diff 色彩图是发散的,一侧是蓝色的阴影,另一侧是棕色的阴影。

https://user-images.githubusercontent.com/3487237/51001561-092d8800-14f6-11e9-868b-009e947ed5eb.png

2017年12月的地面压力异常,由Chad Greene制作。

泥潭

tarn 色彩图是发散的,一侧是棕色的干燥阴影,另一侧是绿色和蓝色的范围。色彩图的正端旨在反映 rain 中的颜色,因此对于降雨异常(围绕 0 或其他一些临界值)而言,它是 rain 的补充色彩图。

https://user-images.githubusercontent.com/3487237/51001558-0894f180-14f6-11e9-91e1-3ef9e28fcc81.png

降雨异常,由Chad Greene制作。

资源

这里有一些我最喜欢的资源。

cmocean在其他地方可用!

  • colormap
  • julia
  • 空间时间海洋学查询系统 (STOQS) 是一种地理空间数据库软件包,旨在提供对原位海洋学测量数据的有效访问。

精美可视化示例:

  • 地球风/洋流/温度/一切可视化:这是一个全球风和海洋动力学及属性的精彩可视化。它也非常适合教学,并且似乎在不断开发中并获得新的字段作为绘图选项。
  • 这张秋叶地图易于使用、清晰且引人注目。这是我们都渴望达到的目标!
  • 《纽约时报》Upshot栏目中关于政治倾向取决于出生年份的巧妙可视化。这是发散的红色到蓝色色彩图的完美使用。

为什么jet是一个不好的色彩图,以及如何选择更好的色彩图:

  • 这是我一切开始的文章:为什么工程师和科学家应该担心颜色?
  • Matteo Niccoli撰写的关于色彩映射的优秀系列文章,将真正教会您所需了解的知识,请访问 Matteo Niccoli 的博客。
  • Jake Vanderplas 对反对使用 Jet 色彩映射的论点的精彩总结,请访问 Jake Vanderplas 的博客。
  • 美国气象学会公报(BAMS)中一篇优秀的摘要,总结了可视化研究,并介绍了一种选择良好色彩映射的工具,该工具旨在用于大气研究,但应用广泛。
  • 工具 可以将您的(小文件大小)图像转换为色盲患者所看到的图像,以便您可以更好地决定所使用的颜色。
  • 来自 matplotlib 绘图包网站的关于选择色彩映射的文档
  • 关于选择良好的科学色彩映射 的技巧。
  • 彩虹的终结,呼吁停止使用 Jet 色彩映射。
  • 研究表明,Jet 对您的健康有害!
  • 对先前研究的重新审查似乎显示,视觉证据表明锋面实际上只是Jet 色彩映射的伪影

有一系列来自 2014 年和 2015 年 SciPy 会议的关于色彩映射的演讲。

  • Damon McDougall 介绍了使用 Jet 表示数据的问题。
  • Kristen Thyng 介绍了如何选择更好的色彩映射,包括使用感知上均匀的色彩映射,并考虑要表示的信息是连续的还是发散的。
  • Nathaniel Smith 和 Stéfan van der Walt 进一步解释了 Jet 色彩映射的弊端,甚至对您的健康有害!他们随后提出了 matplotlib(一个 Python 绘图库)的新色彩映射。
  • Kristen Thyng 在 Nathaniel 和 Stéfan 所做工作的基础上,提出了用于绘制典型海洋学量的新色彩映射(最终形成了 cmocean!)。

制作优秀图表的其他技巧:

制作精美图表的工具:

  • Seaborn 将帮助您制作非常精美的统计图。

联系方式:

Kristen Thyng 是 cmocean 的主要开发人员。如有任何问题、意见或想法,请发送电子邮件。我正在收集正在使用的色彩映射的示例(见上文)以及色彩映射的用户,因此如果您正在使用 cmocean,我很乐意收到您的来信。kthyng 在 gmail.com 或在 Twitter 上 @thyngkm 联系。

索引和表格: