带有'的散点图;连续二元';python中的调色板

带有'的散点图;连续二元';python中的调色板,python,matplotlib,plot,gradient,seaborn,Python,Matplotlib,Plot,Gradient,Seaborn,我已经能够使用表示连续变量的调色板绘制散布,使用以下脚本: import numpy as np import seaborn as sns import matplotlib.pyplot as plt x, y, z = np.random.rand(3, 50) cmap = sns.cubehelix_palette(start=5, light=1, as_cmap=True) fig, ax = plt.subplots() points = ax.scatter(x, y, c

我已经能够使用表示连续变量的调色板绘制散布,使用以下脚本:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

x, y, z = np.random.rand(3, 50)
cmap = sns.cubehelix_palette(start=5, light=1, as_cmap=True)

fig, ax = plt.subplots()
points = ax.scatter(x, y, c=z, s=20, cmap=cmap)
fig.colorbar(points)

但是,我需要创建一个带有“双变量调色板”的地图。我将最终创建这样的地图,但目前我正在寻找以这种方式绘制散布。(来源:)
我希望绘制散点图,使颜色表示地图中的变量RMSE和R。

您可以通过取两个不同颜色地图的平均值来创建一个双变量颜色地图。使用不同的配色方案很好,你可以在显示的范围内进行实验

输出为:

关于在地图上绘图以及将较小的轴嵌入较大的轴,有大量的信息,因此扩展此想法来创建您在问题中链接到的图像应该不会太难


如果这回答了你的问题,请告诉我

我编辑了脚本以处理散点图数据并在彩色地图中反转y轴。这显示了这些如何以更好的方式工作。
import numpy as np
import matplotlib.pyplot as plt

def colorFromBivariateData(Z1,Z2,cmap1 = plt.cm.YlOrRd, cmap2 = plt.cm.PuBuGn):
    # Rescale values to fit into colormap range (0->255)
    Z1_plot = np.array(255*(Z1-Z1.min())/(Z1.max()-Z1.min()), dtype=np.int)
    Z2_plot = np.array(255*(Z2-Z2.min())/(Z2.max()-Z2.min()), dtype=np.int)

    Z1_color = cmap1(Z1_plot)
    Z2_color = cmap2(Z2_plot)

    # Color for each point
    Z_color = np.sum([Z1_color, Z2_color], axis=0)/2.0

    return Z_color

z1 = np.random.random((50,100))
z2 = np.random.random((50,100))
Z_color = colorFromBivariateData(z1,z2)

xx, yy = np.mgrid[0:100,0:100]
C_map = colorFromBivariateData(xx,yy)

fig = plt.figure(figsize=(10,5))

ax1 = fig.add_subplot(1,2,1)
ax1.imshow(Z_color)
ax1.set_title('Data')

ax2 = fig.add_subplot(1,2,2)
ax2.imshow(C_map)
ax2.set_title('Bivariate Color Map')
ax2.set_xlabel('Variable 1')
ax2.set_ylabel('Variable 2')

fig.tight_layout()
fig.show()