感知上更统一的颜色图?

Kar*_*ska 5 python colors matplotlib ggplot2 colormap

我提倡在将科学数据绘制为灰度图像并应用错误着色时使用感知统一的颜色图。我不知道这些是谁发明的,但这些颜色图太棒了,我不会使用其他任何东西。

无论如何,老实说,我对在许多流行的绘图软件(R-ggplot、python-matplotlib、matlab、JMP 等)中实现的 5 种颜色图(viridis、等离子、地狱、岩浆、cividis)感到有些厌烦.) 我相信你们中的一些人也感到同样的单调......

那么除了这 5 个颜色图之外,还有哪些在感知上是一致的颜色图?

奖励:是否有一些算法可以导出具有感知统一质量的颜色图(可能不是因为颜色感知具有心理方面)?但如果是这样,那是什么?

一些例子和参考: https://matplotlib.org/tutorials/colors/colormaps.html https://matplotlib.org/tutorials/colors/colormaps.html

https://www.youtube.com/watch?v=xAoljeRJ3lU

131*_*13e 11

我想有点晚了,但我的CMasher 包提供了一个大的科学色彩图集合(我认为在撰写本文时有 42 个),这些色彩图在感知上都是统一的顺序。以下是撰写本文时 CMasher 中当前可用的所有颜色图的概述。 CMasher 色彩图概述

在线文档中,我单独描述了每个颜色图;讨论改进颜色图使用的主要方法等等。它还提供了一组实用函数,可用于以各种方式操作颜色图。


Kel*_*aar 8

如果您关注此页面:http://bids.github.io/colormap/,您将找到生产 Viridis、Magma、Inferno 和 Plasma 所需的所有详细信息。所有详细信息都太长,无法作为答案进行枚举,但使用上述页面和viscm,您可以重新生成它们以及更多交互式内容。

或者,使用Color

import colour
import numpy as np

CAM16UCS = colour.convert(['#ff0000', '#00ff00'], 'Hexadecimal', 'CAM16UCS')
gradient = colour.utilities.lerp(
    CAM16UCS[0][np.newaxis],
    CAM16UCS[1][np.newaxis],
    np.linspace(0, 1, 20)[..., np.newaxis])
RGB = colour.convert(gradient, 'CAM16UCS', 'Output-Referred RGB')

colour.plotting.plot_multi_colour_swatches(
    [colour.plotting.ColourSwatch(RGB=np.clip(x, 0, 1)) for x in RGB])

print(colour.convert(RGB, 'Output-Referred RGB', 'Hexadecimal'))

['#fe0000' '#fb3209' '#f74811' '#f35918' '#ef671e' '#ea7423' '#e67f28'
 '#e18a2c' '#dc9430' '#d79e34' '#d1a738' '#cbb03b' '#c4b93d' '#bcc23e'
 '#b2cc3d' '#a6d53a' '#97df36' '#82e92e' '#62f321' '#00ff00']
Run Code Online (Sandbox Code Playgroud)

PUG

请注意,两个边界颜色以十六进制值给出,但您显然可以选择任何相关的颜色空间。同样,CAM16可以替换为JzAzBz或类似的。

您可以使用此Google Colab 笔记本在线尝试该操作。