海洋学精美色彩映射: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.
这是我们的图库
import cmocean
cmocean.plots.plot_gallery()
![_images/index-1.png](_images/index-1.png)
选择这些色彩映射是为了在感知上均匀,并在顺序、发散或循环(相位色彩映射)方面反映它们所代表的数据,并使其直观。例如,algae 色彩映射是绿色的阴影,可以代表叶绿素。
这是色彩映射的亮度
import cmocean
cmocean.plots.plot_lightness()
![_images/index-2.png](_images/index-2.png)
最好以 cam02ucs 色彩空间来思考,其中欧几里得距离等同于人类感知的变化。使用 viscm 工具 可以看到这些色彩映射在此色彩空间中的绘图以及其他一些重要属性。
以下是 haline 色彩映射的一些属性。我们可以看到,该色彩映射可以很好地打印为灰度图,在整个色彩映射中具有一致的感知增量,并且对于患有色盲的人来说具有良好的可视性。它在其 3D 色彩空间中具有平滑的表示形式,并且图像中的细节清晰可见。
import cmocean
cmocean.plots.wrap_viscm(cmocean.cm.haline, saveplot=False)
![_images/index-3.png](_images/index-3.png)
使用 viscm 工具对色彩映射的所有评估都显示在页面 viscm 工具中的 cmocean 色彩映射 中。
安装¶
要安装:pip install cmocean
使用 Anaconda 安装:conda install -c conda-forge cmocean
如果您想使用 plots 子模块,则可以使用以下方式安装
pip install "cmocean[plots]"
这也将安装 viscm
和 colorspacious
。
功能¶
所有色彩映射都可以在 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)
![_images/index-4.png](_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()
![_images/index-5.png](_images/index-5.png)
您可以使用 cmocean.tools.lighten() 函数使用小于 1 的 alpha 值来淡化色彩映射,以便您可以叠加更容易看到的轮廓和其他线条
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()
![_images/index-6.png](_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')
![_images/index-7.png](_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])
![_images/index-8.png](_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])
![_images/index-9.png](_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])
![_images/index-10.png](_images/index-10.png)
色彩映射详细信息¶
thermal¶
thermal 色彩映射是连续的,深蓝色表示较低、较冷的值,并通过红色过渡到黄色,表示增加的较暖值。
![http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_water_temp.png](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](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](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](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](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](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://data.ioos.us/gliders/status/summary/static/profiles/drudnick/sp069-20181109T1607/temperature.png](https://data.ioos.us/gliders/status/summary/static/profiles/drudnick/sp069-20181109T1607/temperature.png)
来自中大西洋地区协会沿海海洋观测系统 (MARACOOS) 的滑翔机数据。
来自 tecplot 的海洋模型可视化。
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://clarkrichards.org/figure/source/2016-04-25-making-section-plots/plot2-1.png](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](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](https://user-images.githubusercontent.com/3487237/42728535-df605f5e-8781-11e8-973e-0f7385daef3c.png)
上层海洋 CTD 数据的盐度图;由 Luz Zarate Jimenez 制作。
来自中大西洋地区协会沿海海洋观测系统 (MARACOOS) 的滑翔机数据。
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)
![_images/index-11.png](_images/index-11.png)
oxy¶
oxy 色彩映射在大部分区域是连续的,代表海洋水中氧气饱和度的正常范围,并在色彩映射的 80% 处发散,以表示过饱和状态。色彩映射的底部 20% 为红色,以突出显示缺氧或低氧水域,但为了在红色色调不重要的情况下仍然可以相对无缝地打印为灰度。色彩映射的顶部 20%(发散后)为黄色,以突出显示过饱和水域。此色彩映射的最小值和最大值旨在进行控制,以便正确放置低氧和过饱和氧状态。此色彩映射是为密西西比河羽流区域开发的,该区域经常出现和监测低氧和过饱和条件。
![https://cloud.githubusercontent.com/assets/3487237/16996267/85ac01ea-4e7e-11e6-9801-ee97f7e65940.png](https://cloud.githubusercontent.com/assets/3487237/16996267/85ac01ea-4e7e-11e6-9801-ee97f7e65940.png)
来自德克萨斯农工大学 (Texas A&M) 物理海洋数值组 (PONG) 的墨西哥湾西北部模型输出。使用简单的底部氧气利用参数化对底部氧气的模拟揭示了底部氧气的复杂结构。虽然受缺氧影响的区域沿陆架延伸近 400 公里,但在小得多的尺度(低至几公里)上也存在变异性。密西西比河/阿查法拉亚河羽流的位置以及羽流中存在的不稳定性决定了缺氧底层水域的范围和结构。由德克萨斯农工大学的 Veronica Ruiz 完成。
![https://user-images.githubusercontent.com/3487237/42728540-0d24e28e-8782-11e8-8874-82e65d76ef34.png](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](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](https://user-images.githubusercontent.com/3487237/42728981-de0d3ee4-878e-11e8-89ca-b124c49d5d0e.png)
索莫夫海测深图,由 Josué Martinez Moreno 在 blender 中制作
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](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](https://user-images.githubusercontent.com/3487237/42728541-11ed4d7e-8782-11e8-945c-1e2dcdb61ace.png)
上层海洋 CTD 数据的潜在密度图;由 Luz Zarate Jimenez 制作。
藻类¶
algae 色彩映射是连续的,低值使用淡绿色,随着值的增加而增加绿色,这可用于表示水中叶绿素的增加。下面显示了来自德克萨斯农工大学滑翔机的此色彩映射的两个示例。此色彩映射基于 matplotlib 的 Greens,但使用 viscm 工具从头开始重新创建。
![http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_flbbcd_chlor_units.png](http://gandalf.gcoos.org/data/gandalf/tamu/unit_307/2017/2017_12_18/plots/sci_flbbcd_chlor_units.png)
振幅¶
amp 色彩映射从淡白色到深红色连续变化,可用于表示波高值的增加。此色彩映射是 balance 色彩映射的正半部分。
![https://media.springernature.com/lw900/springer-static/image/art%3A10.1038%2Fs41598-018-35936-w/MediaObjects/41598_2018_35936_Fig2_HTML.png](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.
Lenhart, H. J., & Große, F. (2018). 在 OSPAR 框架内使用跨界营养物建模评估 WFD 营养物减少的影响。海洋科学前沿, 5, 447.
Grunert, B. K., Brunner, S. L., Hamidi, S. A., Bravo, H. R., & Klump, J. V. (2018). 量化冷水入侵在浅水沿海系统中跨越对比年份的影响:密歇根湖的绿湾。大湖研究杂志, 44(5), 851-863.
相位¶
phase 色彩映射是循环的,在设定的亮度值下跨越所有色调。此映射旨在用于波相位和潮汐相位等属性,这些属性从 0° 到 360° 再到 0° 回绕,应在色彩映射中没有主要的感知跳跃的情况下表示。
![https://user-images.githubusercontent.com/3487237/42728991-41ed6e0c-878f-11e8-80ad-4623b26de2cc.png](https://user-images.githubusercontent.com/3487237/42728991-41ed6e0c-878f-11e8-80ad-4623b26de2cc.png)
Kristen Thyng 制作的北大西洋潮汐相位图。
平衡¶
balance 色彩映射是发散的,深蓝色到近白色到深红色表示负值到零值到正值;这可用于表示海平面高度,海平面高度的偏差是偏离中性近白色的颜色阴影。在这种情况下,已选择红色阴影来表示高于参考值(通常是平均海平面)的海平面高度,以便与通常与自由表面增加相关的较温暖的水相联系,例如墨西哥湾的环流。此色彩映射的一个示例来自德克萨斯州和路易斯安那州陆架的数值模拟。此色彩映射基于 matplotlib 的 RdBu,但使用 viscm 工具从头开始重新创建。
![http://pong.tamu.edu/~kthyng/movies/txla_plots/ssh/2010-07-30T00.png](http://pong.tamu.edu/~kthyng/movies/txla_plots/ssh/2010-07-30T00.png)
![https://pbs.twimg.com/media/CsWzox7UsAAeKwS.jpg](https://pbs.twimg.com/media/CsWzox7UsAAeKwS.jpg)
时空海洋查询系统 (STOQS)
差值¶
delta 色彩映射从较深的蓝色发散到略微偏白的颜色,再到黄绿色的阴影,可用于表示关键值(通常为零)附近的散度速度值。此色彩映射的灵感来自 Francesca Samsel 的类似色彩映射,但使用 viscm 工具从头开始生成。
湖泊¶
tarn 色彩映射是发散的,一侧是干燥的棕色阴影,另一侧是绿色和蓝色的范围。色彩映射的正端旨在反映 rain 中的颜色,因此是 rain 降雨异常(在 0 或其他一些临界值附近)的补充色彩映射。
资源¶
以下是一些我最喜欢的资源。
cmocean 在其他地方可用!¶
- 用于 MATLAB,由 Chad Greene 提供
- 用于 R:Oce 海洋分析包,由 Dan Kelley 和 Clark Richards 提供
- 用于 海洋数据查看器
- 用于 cpt-city 和 github 上的通用映射工具 (GMT)
- 用于 Paraview,灵感来自 Phillip Wolfram。
- 在 Plotly 中
- Chad Greene 的 Matlab 中的南极制图工具 使用 cmocean
- 对于 Tableau,作为 github 上的首选项文件
- 对于 ImageJ,作为 LUT 上的首选项文件
- 在 iGOTM 中,它模拟世界上任何地方的水柱。
- 以下软件包中包含 cmocean 色彩映射
精美可视化示例:¶
为什么 jet 是一种糟糕的色图,以及如何选择更好的色图:¶
- 这篇文章开启了我对这个问题的研究:为什么工程师和科学家应该担心颜色?
- Matteo Niccoli 关于 jet 和如何选择色图的优秀系列文章,将真正教会您需要了解的内容。
- Jake Vanderplas 对反对使用 jet 的论点的精彩总结。
- 美国气象学会公报 (BAMS) 中一篇关于可视化研究的良好 总结,并介绍了用于选择良好色图的工具,该工具主要针对大气研究,但也具有广泛的适用性。
- 这个工具 可以将您的(小文件大小的)图像转换为色盲患者看到的样子,以便您可以更好地决定使用的颜色。
- 来自 matplotlib 绘图软件包网站的文档,用于选择色图。
- 选择良好科学色图的技巧
- 彩虹的末日,呼吁停止使用 jet。
- 研究表明,jet 对您的健康不利!
- 对先前研究的重新审查似乎显示,视觉证据表明,锋面实际上只是 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!)。
制作优秀图表的其他技巧:¶
- 这个 链接 提供了一些关于选择线条颜色、色图以及使用离散与连续色图的技巧。
- 如何绘制糟糕的图表或不应该做什么 提供了一些关于折线图和条形图的技巧,并总结了一些设计大师 Edward Tufte 的技巧。
联系方式¶
Kristen Thyng 是 cmocean 的主要开发人员。如有问题、意见和想法,请发送电子邮件。我正在收集 cmocean 色图在实际应用中的示例(见上文)以及色图的用户,所以如果您正在使用 cmocean,我很乐意收到您的来信。kthyng 在 gmail.com 或在 twitter 上 @thyngkm。