首页 > 解决方案 > 在散景中使用半透明调色板

问题描述

我想在散景中创建一个具有不同 alpha 值的调色板,所以有些颜色是半透明的。

我尝试将一些 RGBA 值作为十六进制 ( #33eedd777) 或 CSS 颜色 ( rgba(129, 23, 43, 90)) 作为调色板传递,但散景引发了ValueError.

这是一个代码示例:

import numpy as np

from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.transform import linear_cmap
from bokeh.util.hex import hexbin

n = 50000
x = np.random.standard_normal(n)
y = np.random.standard_normal(n)

bins = hexbin(x, y, 0.1)

p = figure(tools="wheel_zoom,reset", match_aspect=True, background_fill_color='#440154')
p.grid.visible = False

cm = ['#08459400', '#f7fbffff']
cm = ['rgba(80, 80, 80, 10)', 'rgba(8, 8, 8, 255)', ]

p.hex_tile(q="q", r="r", size=0.1, line_color=None, source=bins,
           fill_color=linear_cmap('counts', cm, 0, max(bins.counts)))
show(p)

标签: pythondata-visualizationbokeh

解决方案


从 Bokeh0.13.0开始,这似乎是一个错误。的Seq(Color)属性LinearColorMap应该接受 RGBA 元组的列表,例如[(100, 80, 200, 0.2), ...],它确实接受它们而没有验证错误,但不会生成正确的输出。这就是答案,此时没有要添加的其他信息或解决方法(不能使用 CSS 颜色字符串,并且十六进制颜色代码不能有 alpha)。

我鼓励您在 GitHub 上提交包含此信息的错误报告,以便可以为所有用户修复它:

https://github.com/bokeh/bokeh/issues


推荐阅读