【问题标题】:Using colormap with bokeh scatter使用带有散景散点的颜色图
【发布时间】:2016-05-20 19:23:49
【问题描述】:

在matplotlib 中,scatterplot 提供了使用图的颜色来指示值或大小的可能性,如下图:

对于bokeh,类似的examples 似乎会手动生成 rgb 颜色,这使得很难生成按幅度缩放的颜色图,尤其是。 wrt。不同的颜色图。

是否可以在bokeh 中具有类似的功能,或者使用matplotlib 的颜色图来设置颜色?

【问题讨论】:

    标签: python matplotlib scatter-plot bokeh colormap


    【解决方案1】:

    直接使用matplotlib 的颜色图就很简单了。比如下面在bokeh的例子中使用了viridis(注意我用的是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)  
    

    本质上,对于cm 中的任何 matplotlib 颜色图,使用值数组对其进行初始化将返回一个数组,其中每个值替换为 [0,1] 范围内的 [r,g,b,a] 值。请注意,这假设所有值也在 0 和 1 之间;这里我使用 matplot.colors.Normalize 来确保这一点。

    【讨论】:

      【解决方案2】:

      如果您想使用字段名称,另一种选择是使用 LinearColorMapper:

      from bokeh.models import LinearColorMapper
      
      color_mapper = LinearColorMapper(palette='Magma256', low=min(radii), high=max(radii))
      
      p.scatter(x,y,color={'field': 'radii', 'transform': color_mapper})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 2018-06-19
        • 2012-02-12
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-17
        相关资源
        最近更新 更多