2016-02-10 30 views
9

Nel matplotlib il scatterplot offre la possibilità di utilizzare il colore di un complotto per indicare il valore o grandezza come questa trama:Utilizzando colormap con bokeh dispersione

enter image description here

Per bokeh, simile examples sembrano generare manualmente il colori RGB, che rende difficile la produzione di grafici con il colore ridimensionato per grandezza, esp. WRT. colormaps divergenti.

È possibile avere funzionalità simili in bokeh o utilizzare i colori del colore matplotlib per impostare il colore?

risposta

10

È abbastanza semplice utilizzare direttamente le mappe del colore matplotlib. Ad esempio, il seguente usa viridis in bokeh s' esempio (nota che sto utilizzando un notebook jupyter):

import numpy as np 

from bokeh.plotting import figure, show, output_notebook 
import matplotlib as mpl 

output_notebook() 

N = 4000 
x = np.random.random(size=N) * 100 
y = np.random.random(size=N) * 100 
radii = np.random.random(size=N) * 1.5 
colors = [ 
    "#%02x%02x%02x" % (int(r), int(g), int(b)) for r, g, b, _ in 255*mpl.cm.viridis(mpl.colors.Normalize()(radii)) 
] 

p = figure() 

p.scatter(x, y, radius=radii, 
      fill_color=colors, fill_alpha=0.6, 
      line_color=None) 

show(p) 

In sostanza, per ogni colormap matplotlib in cm, inizializzandolo con una serie di valori restituirà un array con ogni valore sostituito da [r, g, b, a] valori nell'intervallo [0,1]. Si noti che questo presuppone che tutti i valori siano compresi tra 0 e 1; qui uso matplot.colors.Normalize per garantire questo.

Problemi correlati