2017-10-09 162 views
0

我嘗試在Python 3.5.3中使用Plotly製作熱圖。這個想法是傳遞網格上每個點的座標(x,y),並根據屬性z(z有三個值 - 0,1,2)對它們着色。Colorscale不匹配顏色(python)

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

回答

0

documentation

的colorscale必須是含陣列陣列映射的歸一化值 到RGB,RGBA,六角,HSL,HSV,或命名顏色字符串。最小值爲 ,最低(0)和最高(1)值的映射爲 。例如,[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]

在您的示例colorscale範圍爲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

+0

非常感謝您!另外,如果我理解正確的值之間的時間間隔應該是大致相等的,對嗎? – Boddha

+0

@Boddha:時間間隔取決於你,取決於你想得到什麼。 –