我正在寻找一个好的圆形/循环颜色映射来表示相位角信息(其中值限制在范围[0,2π],其中0和2π表示相同的相位角)。
背景:我想通过绘制整个系统振荡的功率谱密度和相对相位信息来可视化正常模式。
我承认以前我用“彩虹”彩色地图绘制功率图,用“hsv”彩色地图绘制相位图(见[1])。然而,彩虹彩色地图的使用是极不鼓励的,因为它缺乏知觉线性和排序[2][3]。所以我切换到了“coolwarm”彩色地图的功率图,我很喜欢。不幸的是,“hsv”彩色地图似乎引入了与“彩虹”地图相同的视觉扭曲(而且它也不太符合“coolwarm”地图,因为相比之下它看起来有点丑陋和浮华)。
有没有人对我可以用来绘制相位图的循环彩色地图有很好的建议?
要求:
它需要是圆形的,以便0和2π的值用相同的颜色表示。
它不应该引入任何视觉扭曲;特别是,它应该是感知线性的(“hsv”彩色地图似乎不是这样)。我不认为感知排序对相位信息有这么大的影响,但它当然不会造成任何伤害。
当与“coolwarm”颜色映射结合时,它应该具有视觉吸引力。不过,我并没有对“coolwarm”一窍不通,如果还有另一对彩色地图可以显示振幅和相位信息,我很乐意考虑其他选择。
如果colormap可在matplotlib中使用(或可以轻松创建),则可获得额外积分。
非常感谢您的建议!
[1]http://matplotlib.org/examples/color/colormaps_reference.html
[2]http://www.renci.org/~borland/pdfs/RainbowColorMap_VisViewpoints.pdf
[3]http://medvis.org/2012/08/21/rainbow-colormaps-what-are-they-good-for-absolutely-nothing/
从matplotlib version 3.0开始,有内置的循环perceptually uniform colormaps。好的,目前只有一个颜色映射,但是有两个选择开始和结束,即^{} and ^{} 。
一个简短的例子来演示它们的外观:
上图为:
这些全新的彩色地图是对现有的感知一致(顺序)彩色地图集合的一个惊人的补充,即viridis,plasma,inferno,magma和cividis(最后一个是a new addition in 2.2,它不仅感知一致,而且对色盲友好,但它应该尽可能接近色盲和非色盲的人)。
您可以尝试"husl" system,它类似于hls/hsv,但具有更好的视觉特性。它在seaborn和standalone package中可用。
下面是一个简单的例子:
编辑:Matplotlib现在有很好的循环颜色映射,请参阅下面@andras deak的答案。他们使用类似于这个答案的颜色映射方法,但是在亮度上平滑边缘。
“色调外壳”颜色映射的问题是,从中读取角度是不直观的。因此,我建议你自己制作彩色地图。以下是一些可能性:
在我们的自定义颜色图中,白色代表0,蓝色代表1i,等等。 在右上角,我们可以看到色调外壳图进行比较。在这里,颜色角度指定是随机的。
另外,当绘制一个更复杂的函数时,当使用我们的一个颜色映射时,可以直接读取结果的阶段。
下面是情节的代码:
相关问题 更多 >
编程相关推荐