Colorcale在plotly(python)中颜色不匹配

时间:2017-10-09 13:52:01

标签: python colors plotly heatmap

我尝试在Python 3.5.3中使用Plotly制作热图。我们的想法是传递网格上每个点的坐标(x,y),并根据属性z为它们着色(z有三个值 - 0,1,2)。

from plotly import offline as py

colors = [
    [0, 'rgb(0,0,255)'], #blue 
    [1, 'rgb(255, 0, 0)'], #red
    [2, 'rgb(188, 188, 188)'] #gray
]

data = [dict(z=z, y=y, x=x, type='heatmap',  colorscale=colors, showscale=True)]

py.plot({'data': data, 'layout': {'width': 500, 'height': 500}}, filename="plot.html")

然而,在结果图中,颜色完全不匹配。我试着搜索Plotly文档,但仍然不知道这里有什么问题。

enter image description here

1 个答案:

答案 0 :(得分:1)

来自documentation

  

colorscale必须是包含映射规范化的数组的数组   值为rgb,rgba,hex,hsl,hsv或命名颜色字符串。在   最小值,最低(0)和最高(1)值的映射是   需要。例如,[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]

在您的示例中,色阶范围从0到2.如果将其标准化为最大值1,则应该有效。

from plotly import offline as py

colors = [[0, 'rgb(0,0,255)'], #blue 
          [0.5, 'rgb(255, 0, 0)'], #red
          [1, 'rgb(188, 188, 188)'] #gray
         ]
z = [[1, 20, 30],
     [20, 1, 60],
     [30, 60, 1]]
data = [dict(z=z,
             type='heatmap',
             colorscale=colors, 
             showscale=True)]

py.plot({'data': data})

enter image description here