Python 如何同时使用两个值绘制颜色贴图?

Python 如何同时使用两个值绘制颜色贴图?,python,colormap,Python,Colormap,我想知道如何制作这种彩色地图: 我希望画这种地图。我已经为每个网格设置了两个值(即(p,et),(R,et)),所以我需要如何使用这个颜色映射和我的相关值。但我不知道如何制作这张彩色地图。 参考文献:A.J.Teuling。大陆蒸发趋势的区域观点。 谢谢 您可以按照以下方式进行: import cv2 import numpy as np def get_rgb(two_d_pixels): theta = np.arctan(two_d_pixels[1,:] / two_d_pix

我想知道如何制作这种彩色地图:

我希望画这种地图。我已经为每个网格设置了两个值(即(p,et),(R,et)),所以我需要如何使用这个颜色映射和我的相关值。但我不知道如何制作这张彩色地图。 参考文献:A.J.Teuling。大陆蒸发趋势的区域观点。
谢谢

您可以按照以下方式进行:

import cv2
import numpy as np
def get_rgb(two_d_pixels):
    theta = np.arctan(two_d_pixels[1,:] / two_d_pixels[0,:])
    r = np.sqrt(two_d_pixels[1,:]**2 +  two_d_pixels[0,:]**2)
    hue = (theta+3.14/2) * 128./(3.14)  # 127 max for hue
    sat = (r/np.sqrt(2)) * 255 #255 max for sat
    H,W = two_d_pixels.shape[1:3]
    retval = np.zeros([H,W,3],dtype = np.uint8)
    retval[:,:,0] = hue
    retval[:,:,1] = sat
    retval[:, :, 2] = 255
    retval = cv2.cvtColor(retval,cv2.COLOR_HSV2BGR)
    return retval

two_d_image = np.mgrid[-1:1:0.1,-1:1:0.1]
rgb = get_rgb(two_d_image)
cv2.imshow('ok',rgb)
cv2.waitKey(0)
这显示了从(-1,1),(-1,1))到RGB的映射,例如。
我用mgrid做了一个2*X*Y张量,ρp和ρrg是这两个张量平面中的值。如果您需要与论文中完全相同的颜色贴图,您可以调整色调、sat的公式,记住arctan的范围为-pi/2到pi/2,r的范围为sqrt(2)到0

您可以使用自己的颜色贴图,例如在openCV中。所以你需要将你的2个值映射成一个单一的颜色映射值,看起来你可以通过改变周长周围的色调,并在接近0,0时将饱和度降低到0,0,即色调=k*theta,Sat=r^2,Val=120s来实现!我想知道我是否可能在一开始制作2d彩色地图,但我认为这对我来说现在是不可能的。我会试试你的建议。我在建议一种在图中重现2D颜色贴图的方法!查找表的RGB值是根据图中所示正方形上的二维函数计算的。围绕正方形边缘,色调会发生变化。接近正方形中间时,饱和度会有所不同。如果您认为答案足够,我建议您单击复选标记,表明它是一个可接受的答案。好的!你的方法很好,但我用matlab成功地做到了。我制作了一个90*90*3的矩阵,里面填充了rgb数字,并用我的数据进行了拟合。不管怎样,你的推荐对我帮助很大。