2017-12-05 4 views
1

Ich versuche ein Streudiagramm mit Bokeh zu machen. Zum Beispiel:Bokeh Streuplot mit Farbverlauf

from bokeh.plotting import figure, show, output_notebook 

TOOLS='pan,wheel_zoom,box_zoom,reset' 
p = figure(tools=TOOLS) 

p.scatter(x=somedata.x, y=somedata.y) 

Idealerweise würde Ich mag mit einem stärkeren Intensität färben, da die Daten seinen Maximal-/Minimalwert von y annähert. Zum Beispiel von rot nach blau (-1 zu 1), genau wie in einem heatmap (Parameter vmax und vmin).

Gibt es eine einfache Möglichkeit, dies zu tun?

Antwort

1

Bokeh verfügt über eine integrierte Funktionalität zum Zuordnen von Werten zu Farben und deren Anwendung auf die Plotglyphen.

Sie können alternativ für jeden Punkt eine Liste mit Farben erstellen und diese übergeben, wenn Sie diese Funktionen nicht verwenden möchten.

Siehe unten ein einfaches Beispiel:

import numpy as np 
from bokeh.plotting import figure, show 
from bokeh.models import ColumnDataSource, LinearColorMapper 


TOOLS='pan,wheel_zoom,box_zoom,reset' 
p = figure(tools=TOOLS) 

x = np.linspace(-10,10,200) 
y = -x**2 

data_source = ColumnDataSource({'x':x,'y':y}) 

color_mapper = LinearColorMapper(palette='Magma256', low=min(y), high=max(y)) 

# specify that we want to map the colors to the y values, 
# this could be replaced with a list of colors 
p.scatter(x,y,color={'field': 'y', 'transform': color_mapper}) 

show(p)