在matplotlib中从0-1范围获得颜色

时间:2015-08-07 04:31:40

标签: python matplotlib

我有许多散点图,我可以用图表的颜色来表示变量之间的相关性。相关性归一化为[0,1],我希望蓝色为0到红色为1,但我可以使用其他组合。

将我的相关数字转换为matplotlib放在色谱上的代码是什么?

for col_s in s_data.columns[1:3]:
    for col_e in economic_data.columns[1:3]:
        x= s_data[col_s].interpolate(method='nearest').tolist()
        y= economic_data[col_e].interpolate(method='nearest').tolist()

        corr=np.corrcoef(x,y)[0,1]
        plt.scatter(x, y, alpha=0.5, c=to_rgb(corr))
        plt.show()

2 个答案:

答案 0 :(得分:1)

您可以指定颜色贴图,然后将颜色定义为依赖于该颜色贴图的相关性。首先,您需要从matplotlib导入cm

import matplotlib.cm as cm

然后,将代码的情节线更改为:

plt.scatter(x, y, alpha=0.5, c=corr, cmap=cm.rainbow)

您可以使用any of matplotlib's color maps自定义颜色地图。

答案 1 :(得分:0)

您可以将[0, 1]中的参数映射到十六进制值:

def corr2hex(n):
    ''' Maps a number in [0, 1] to a hex string '''
    if n == 1: return '#fffff'
    else: return '#' + hex(int(n * 16**6))[2:].zfill(6)

print corr2hex(0.31)

>>> 
#4f5c28

然后你可以将它传递给matplotlibs to_rgb()以获得RGB三元组。