在 Bokeh 中,是否可以让标记 alpha 随指定字段中的值而变化?
例如,要按字段改变颜色和标记:
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.transform import factor_cmap,factor_mark
df = some dataframe
palette = ['#440154', '#404387', '#29788E', '#22A784', '#79D151', '#FDE724']
bok_sym = ['circle','asterisk','square_x','circle_x','diamond','hex']
cat_lst = list(df['cat_field'].unique())
df_cds = ColumnDataSource(data=df)
fig = figure(some kwargs)
fig.scatter(x='x',y='y',
source = df_cds,
marker = factor_mark('cat_field',bok_sym,cat_lst)
fill_color = factor_cmap('cat_field',palette,cat_lst),
)
show(fig)
alpha 似乎没有类似的显式函数,但 bokeh.transform 确实提供了通用变换
https://docs.bokeh.org/en/latest/docs/reference/transform.html
我尝试添加以下内容:
from bokeh.transform import transform
alph_lst = [0.2,0.9,0.9,0.9,0.9,0.9]
fig.scatter(x='x',y='y',
source = df_cds,
marker = factor_mark('cat_field',bok_sym,cat_lst)
fill_color = factor_cmap('cat_field',palette,cat_lst),
fill_alpha = transform('cat_field',dict(zip(cat_lst,alph_lst))),
)
但没有成功。
干杯
编辑:
我会注意到我已经(未成功)尝试将透明度作为十六进制代码的一部分传递:
调色板 = ['#44015433', '#404387E6', '#29788EE6', '#22A784E6', '#79D151E6', '#FDE724E6']
