我有一个2D向量(x,y)
,我需要找到一个2D色彩Map表,将这些坐标Map到一个平滑的色彩Map表。颜色代码将仅取决于(x,y)
值。比如说
- 白色围绕中心
- 越往东北越红
- 越往东南方向越蓝
- 我们向西北方向走的时候会有更多的绿色
- 越往西南方向绿色
换句话说:
green red
white
green blue
字符串
我在matplotlib
中没有找到任何符合我需要的东西。我想把坐标转换成幅度和相位,但问题仍然是一样的。我还考虑了在向量(x,y)
中添加一个虚拟维度,使其成为3d维度,然后对生成的3D向量进行归一化。然后,将其馈送到matplotlib
图中的cmap
参数。然而,这将产生不平滑的颜色。有什么线索吗
颜色Map的示例:
的数据
3条答案
按热度按时间xoshrz7s1#
为了确保我正确理解这个问题,我重新陈述一下:你想有两个不同的色彩Map表通道,而不是一个?
我在matplotlib中看不到直接的方法,有两种选择:
对于“hack-y”多重绘图解决方案:
字符串
它产生
x1c 0d1x的数据
你可以对自定义2D到颜色函数做任何你想做的事情,但这里有两个建议:
型
它产生
的
看起来你想要的颜色Map需要更多的规则来将XY区域转换为所需的颜色,以及渐变/混合功能来从一个区域过渡到另一个区域,类似于4中所示的梯形混合。在上面的Map中,
x<=0
,x >0 & y < 0
,x > 0 & y >= 0
,并且white
是1-magnitude(x,y)
,实现此目的的一种方法可能是在图形程序(如Gimp或Inkscape)中使用所需颜色制作点网格,调整关键坐标和指定的颜色三元组(RGB,HSL或HSV),直到您对外观满意,然后使用
scipy.interpolate.griddata
5为XY数据插入3个颜色通道中的每一个,如下所示:型
它产生
的
注:只要我在写自己的色彩空间转换函数,我就可以直接从HSL转换到RGB 3,但也许有一位评论者可以解释为什么matplotlib.colors有
hsv_to_rgb
而不是hsl_to_rgb
(运行matplotlib v.3.3.2)。fcipmucu2#
我会使用像hsl或hsv这样的颜色空间,固定亮度值(l或v),并使用x作为h,y作为s来表示所有的颜色。您需要规范化x和y的值,使其与颜色空间组件兼容。
nbewdwxp3#
要做到这一点的方法是将色彩Map表格式化为具有RGB值的3D数组,即形状为(256,256,3)的阵列
cmap
。使用颜色值填充此数组以组成颜色Map表。然后将两个变量(x,y)
调整到0→255的范围,并将它们转换为dtype = int,(x_int, y_int)
。然后根据
(x_int, y_int)
对cmap
进行采样字符串
然后,您可以可视化色彩Map表和图像:
型
如果你不想手动做这个,你可以在https://colorstamps.readthedocs.io/en/latest/(pip install colorstamps) checkout 软件包
型
的数据
这是我构建的一个包,因为我有与提问者相同的需求。