海洋學的優美色彩映射: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()

(原始碼, png, hires.png, pdf)

_images/index-1.png

這些色彩映射的選擇旨在達到感知均勻,並在循序、發散或循環(相位色彩映射)方面反映它們所代表的資料,且直觀。例如,algae 色彩映射是綠色的陰影,可以代表葉綠素。

這是色彩映射的亮度

import cmocean
cmocean.plots.plot_lightness()

(原始碼, png, hires.png, pdf)

_images/index-2.png

或許在 cam02ucs 色彩空間中思考會更好,在該空間中,歐幾里得距離等同於人類感知上的變化。使用viscm 工具可以查看此色彩空間中這些色彩映射的圖表以及其他一些重要屬性。

以下是一些來自 haline 色彩映射的屬性。我們可以看到,該色彩映射可以很好地列印為灰階,在整個色彩映射中具有一致的感知差異,並且對於色盲人士具有良好的可視性。它在其 3D 色彩空間中具有平滑的表示,並且影像中的細節清晰。

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

(原始碼, png, hires.png, pdf)

_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)

(原始碼, png, hires.png, pdf)

_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)]}

使用 cmap = cmocean.tools.cmap(rgbin, N=10),並給定 rgb 輸入陣列,來建立色彩映射的實例。

所有色彩映射的反向版本都可以透過將 "_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()

(原始碼, png, hires.png, pdf)

_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()

(原始碼, png, hires.png, pdf)

_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')

(原始碼, png, hires.png, pdf)

_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])

(原始碼, png, hires.png, pdf)

_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])

(原始碼, png, hires.png, pdf)

_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])

(原始碼, png, hires.png, pdf)

_images/index-10.png

色彩映射詳細資訊

thermal

thermal 色彩映射是循序的,深藍色代表較低、較冷的值,並透過紅色過渡到黃色,代表較高的溫暖值。

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

來自德州農工大學地球化學和環境研究組 (Geochemical and Environmental Research Group, 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

來自德州農工大學地球化學和環境研究組 (GERG) 的滑翔機資料。

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

來自德州農工大學物理海洋數值組 (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)

(原始碼, png, hires.png, pdf)

_images/index-11.png

oxy

oxy 色彩映射表在大多數情況下是連續的,代表海水中氧氣飽和度的正常範圍,並在色彩映射表的 80% 處發散,以表示過飽和狀態。色彩映射表的底部 20% 為紅色,以突顯缺氧或低氧水域,但為了在應用程式中紅色色調不重要時仍能相對無縫地列印成灰階。發散後,色彩映射表的頂部 20% 為黃色,以突顯過飽和的水域。此色彩映射表的最小值和最大值旨在加以控制,以便正確放置低氧和過飽和氧氣狀態。此色彩映射表是為密西西比河羽狀流區域開發的,該區域經常出現並監測到低氧和過飽和的狀況。

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

德州農工大學物理海洋學數值小組 (PONG) 在墨西哥西北部灣的模型輸出。利用底部氧氣利用率的簡單參數化模擬底部氧氣,揭示了底部氧氣的複雜結構。雖然受缺氧影響的區域沿著陸棚延伸近 400 公里,但在小得多的尺度上(可達幾公里)也存在變異性。密西西比河/阿查法拉亞河羽狀流的位置以及羽狀流中存在的不穩定性,決定了缺氧底部水域的範圍和結構。由德州農工大學的Veronica Ruiz 提供。

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)。固有過程驅動托滕冰川冰架底層融化的變異性。《自然通訊》,9(1),3141。

密集

dense 色彩映射表是連續的,低值為帶白色的藍色,並隨著值的增加而增加紫色,可用於表示水密度的增加。下面顯示了此色彩映射表的兩個範例,來自德州農工大學的滑翔機。此色彩映射表基於 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 色彩映射表是連續的,低值為帶白色的綠色,並隨著值的增加而增加綠色,可用於表示水中葉綠素的增加。下面顯示了此色彩映射表的兩個範例,來自德州農工大學的滑翔機。此色彩映射表基於 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 海洋 (DMO) 線型潛標,一種波浪動力剖面系統的範例資料。

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

Frankie Pavia 提供的衛星衍生 Chl-a,並標示了站點。

物質

matter 色彩映射表是連續的,低值為帶白色的黃色,並隨著值的增加而增加粉紅色,可用於表示水中物質的增加。下面顯示了此色彩映射表的兩個範例,來自德州農工大學的滑翔機。

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)。基於黃素的代謝週期是單細胞酵母生長和分裂的組成部分。《科學報告》,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)。在 OSPAR 框架內使用跨界營養建模評估 WFD 減少營養的影響。《海洋科學前沿》,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)。量化寒冷水入侵在對比年份的淺層沿海系統中的影響:密西根湖格林灣。《大湖研究雜誌》,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

來自德州農工大學物理海洋數值組 (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

Chad Greene 繪製的 2017 年 12 月的地表壓力異常。

tarn 色彩映射表是發散的,一側是棕色的乾燥陰影,另一側是綠色和藍色的範圍。色彩映射表的正端旨在反映 rain 中的顏色,因此是 rain 的降雨異常(約為 0 或其他臨界值)的互補色彩映射表。

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

Chad Greene 繪製的降雨異常。

資源

以下是一些我最喜歡的資源。

cmocean 在其他地方可用!

  • colormap
  • julia
  • 空間時間海洋查詢系統 (STOQS) 是一個地理空間資料庫軟體套件,旨在提供對原位海洋測量資料的有效存取。

精美視覺化範例:

  • 地球風/洋流/溫度/一切 視覺化:這是一個關於全球風和海洋動態及屬性的精彩視覺化呈現。它也很適合教學,而且似乎在持續開發中,並新增了新的繪圖選項。
  • 這個 秋葉地圖 易於使用、清晰且引人注目。這是我們都渴望達成的目標!
  • 《紐約時報》Upshot 部門的精巧 視覺化,顯示政治傾向如何取決於出生年份。這是使用紅到藍發散色彩映射的完美範例。

為什麼 jet 是一種不好的色彩映射,以及如何選擇更好的:

2014 年和 2015 年 SciPy 會議上有一系列關於色彩映射的演講

  • Damon McDougall 介紹使用 jet 表示資料的問題。
  • Kristen Thyng 接著介紹如何選擇更好的色彩映射,包括使用感知上均勻的色彩映射,並考慮所表示的資訊本質上是順序還是發散。
  • Nathaniel Smith 和 Stéfan van der Walt 進一步說明 jet 色彩映射不好,甚至對您的健康有害!他們接著為 Python 繪圖庫 matplotlib 提出新的色彩映射。
  • Kristen Thyng 以 Nathaniel 和 Stéfan 的研究為基礎,提出用於繪製典型海洋學量的色彩映射(這導致了 cmocean!)。

製作精美圖表的其他訣竅:

製作精美圖表的工具:

  • Seaborn 將協助您製作非常精美的統計圖表。

聯絡方式

Kristen Thyng 是 cmocean 的主要開發人員。如有任何問題、意見或想法,請寄電子郵件。我正在收集色彩映射在實際使用中的範例(請見上方),也收集色彩映射的使用者,所以如果您正在使用 cmocean,我很樂意收到您的來信。kthyng 在 gmail.com 或在推特上 @thyngkm。