直接使用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 来确保这一点。