2017-10-09 1 views
0

Ich versuche eine Heatmap mit Plotly in Python 3.5.3 zu erstellen. Die Idee besteht darin, die Koordinaten jedes Punktes auf dem Gitter (x, y) zu übergeben und sie entsprechend der Eigenschaft z zu färben (z hat drei Werte - 0, 1, 2).Farbskala stimmt nicht überein Farben in plotly (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") 

In der resultierenden Grafik sind die Farben jedoch vollständig nicht übereinstimmend. Ich habe versucht, in Plotly-Dokumente zu suchen, habe aber immer noch keine Ahnung, was hier falsch ist.

enter image description here

Antwort

0

Vom documentation

Die Color muss ein Array mit Arrays Mapping einem normalisierte Wert in einem RGB-, RGBA, hex, HSL, hsv oder benannte Farbe String sein. Bei Minimum ist eine Zuordnung für die niedrigsten (0) und höchsten (1) Werte erforderlich. Zum Beispiel [[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']].

In Ihrem Beispiel reicht die Farbskala von 0 bis 2. Wenn Sie es auf maximal 1 normalisieren, sollte es funktionieren.

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

Vielen Dank! Wenn ich richtig verstehe, sollten die Intervalle zwischen normalisierten Werten mehr oder weniger gleich sein, oder? – Boddha

+0

@Boddha: Die Intervalle sind dir überlassen, es hängt davon ab, was du bekommen möchtest. –

Verwandte Themen