Цветовая шкала Python bokeh для диаграммы рассеяния

Я использую боке из библиотеки Python, и мне было интересно, можно ли иметь непрерывную цветовую шкалу (или цветовую полосу) с диаграммами рассеяния.

В настоящее время легко получить легенду с группами цветов, но не иметь непрерывную цветовую шкалу, как на тепловых картах.

Любая помощь, пожалуйста?


person french    schedule 13.06.2016    source источник


Ответы (1)


Вот обсуждение цветовых палитр в боке: Пользовательские цветовые палитры с глифом изображения

Обратите внимание на фрагмент кода внизу о том, как создать палитру боке из палитры matplotlib.

Однако мне удобнее создать отдельный цветовой канал напрямую из палитры matplotlib:

import numpy as np
import matplotlib.cm as cm

import bokeh.plotting as bk

# generate data
N = 4000
x = np.random.random(size=N) * 100
y = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5

# get a colormap from matplotlib
colormap =cm.get_cmap("gist_rainbow") #choose any matplotlib colormap here

# define maximum and minimum for cmap
colorspan=[40,140]

# create a color channel with a value between 0 and 1
# outside the colorspan the value becomes 0 (left) and 1 (right)
cmap_input=np.interp(np.sqrt(x*x+y*y),colorspan,[0,1],left=0,right=1)

# use colormap to generate rgb-values
# second value is alfa (not used)
# third parameter gives int if True, otherwise float
A_color=colormap(cmap_input,1,True)

# convert to hex to fit to bokeh
bokeh_colors = ["#%02x%02x%02x" % (r, g, b) for r, g, b in A_color[:,0:3]]

# create the plot-
p = bk.figure(title="Example of importing colormap from matplotlib")

p.scatter(x, y, radius=radii,
          fill_color=bokeh_colors, fill_alpha=0.6,
          line_color=None)

bk.output_file("rainbow.html")

bk.show(p)  # open a browser

Надеюсь, это поможет!

person Anadyn    schedule 01.07.2016
comment
Привет @Anadyn, Большое спасибо за полезный код, можем ли мы добавить непрерывную цветовую панель? - person french; 08.07.2016
comment
Привет, @french, я думаю, тебе придется делать это вручную, см. обсуждение - person Anadyn; 09.07.2016