Using colormap with bokeh scatter

前端 未结 2 910
情深已故
情深已故 2021-02-08 08:03

In matplotlib the scatterplot offers the possibility of using the color of a plot to indicate value or magnitude like this plot:

For bokeh

2条回答
  •  无人及你
    2021-02-08 08:34

    It's easy enough to just use matplotlib's colormaps directly. For example, the following uses viridis in bokeh's example (note that I'm using a jupyter notebook):

    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)  
    

    Essentially, for any matplotlib colormap in cm, initializing it with an array of values will return an array with each value replaced by [r,g,b,a] values in the range [0,1]. Note that this assumes all the values are between 0 and 1 as well; here I use matplot.colors.Normalize to ensure this.

提交回复
热议问题