使用具有散景散射的色彩映射

M.T*_*M.T 9 python matplotlib scatter-plot bokeh colormap

matplotlib散点图提供了使用曲线的颜色来指示值或量值这样的情节的可能性:

在此输入图像描述

因为bokeh,类似的例子似乎手动生成rgb颜色,这使得难以生成具有按比例缩放的颜色的图,尤其是.WRT.发散的彩色图.

是否可以在颜色图中设置相似的功能bokehmatplotlib设置颜色?

cge*_*cge 11

matplotlib直接使用的色彩图很容易.例如,下面的使用viridisbokeh的例子(注意,我使用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)  
Run Code Online (Sandbox Code Playgroud)

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


sho*_*er3 5

如果要使用字段名称,另一种选择是使用 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})
Run Code Online (Sandbox Code Playgroud)