python - 有没有办法在 Bokeh 中为选择字形提供多种颜色?

标签 python bokeh

我有一个散点图,其中 x 值 < 50 的点为蓝色,x 值 > 50 的点为红色。当我使用框选择工具选择它们时,我试图让颜色反转。所选的蓝色颜色应变为红色,反之亦然。

我尝试通过向 selection_glyph 属性的 fill_color 属性提供颜色数组来实现此目的,但该属性不接受数组。还有其他方法可以实现这一点吗?

import numpy as np
from bokeh.plotting import figure, output_file, show
from bokeh.models import Circle

N = 100
max = 100
x = np.random.random(size=N) * max
y = np.random.random(size=N) * max
output_file("scatter.html")

color1 = []
color2 = []
for a in x:
    if a > 50:
        color1.append("red")
        color2.append("blue")
    else:
        color1.append("blue")
        color2.append("red")

p = figure(tools = "box_select, tap", width = 400, height = 400, 
           x_range = (0,100), y_range = (0,100))

circles = p.circle(x, y, size=10, fill_color = color1, line_color = None)
#circles.selection_glyph = Circle(fill_color = color2, line_color = None)
#circles.nonselection_glyph = Circle(fill_color = color1, line_color = None)

show(p)

最佳答案

是的。将您的数据分成两组,用各自对 p.circle 的调用来绘制每组,为每个调用提供不同的选择/不选择策略:

p = figure(tools = "box_select, tap", width = 400, height = 400, 
           x_range = (0,100), y_range = (0,100))

circles1 = p.circle(x1, y1, size=10, color="red", line_color=None)
circles1.selection_glyph    = Circle(fill_color="blue", line_color=None)
circles1.nonselection_glyph = Circle(fill_color="red",  line_color=None)

circles2 = p.circle(x2, y2, size=10, color="blue", line_color=None)
circles2.selection_glyph    = Circle(fill_color="blue", line_color=None)
circles2.nonselection_glyph = Circle(fill_color="red",  line_color=None)

作为奖励,您不必为每个分散点发送一长串颜色(如果您有很多分散点)。

关于python - 有没有办法在 Bokeh 中为选择字形提供多种颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362961/

相关文章:

python - push_notebook 不更新 Bokeh 更改 data_source

python - 为什么我的记录器会多次记录同一件事?

python - 使用上下文/图向 Python 中的 Surf RDF 添加三元组

python - Scrapy:下一个按钮使用 javascript

python-3.x - 无法对未注册的加载程序类型执行此操作

javascript - Bokeh 自定义 ToolTips {safe} 标签不显示任何内容

python - Heroku 应用程序成功部署,但在加载站点时收到应用程序错误

python - Python Pandas 中的 Groupby/Sum - 零计数不显示......有时

python - 无法增加 Bokeh 中整个图表的大小并使图表处于水平轴

python - 条件工具提示 Bokeh 堆积图