javascript – 如何在散景中设置所选/未选定字形的属性

前端之家收集整理的这篇文章主要介绍了javascript – 如何在散景中设置所选/未选定字形的属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个由几个可观察量的时间序列组成的数据集,我想使用散景来查看时间序列中不同点的相图.我想知道的是如何更改所选或未选定字形的属性(在这种情况下,我想减少未选择点的alpha或更改所选字符的颜色).

下面的代码在ipython笔记本中创建了我想要的界面,并且基于users guidehttp://bokeh.pydata.org/en/0.10.0/docs/user_guide/interaction.html#linked-brushing中的示例.我找不到任何明显的设置选项,我真的不需要为这一件事学习javascript.

import numpy as np
from pandas import DataFrame
from bokeh.plotting import figure,output_notebook,show,gridplot
from bokeh.models import ColumnDataSource,widgets

def znzt_ts():#,plot_antisym=False,**kwargs):
    t = np.arange(1000)
    Eu = np.sin(t * np.pi/10) + np.random.random(1000)
    Ez = np.cos(t * np.pi/10) + np.random.random(1000)
    ts = DataFrame({'t': t,'Eu': Eu,'Ez': Ez})
    tools = 'Box_zoom,pan,reset,save,Box_select'
    source = ColumnDataSource(data=ts)
    original_source = ColumnDataSource(data=ts)

    p1 = figure(plot_width=300,plot_height=300,tools=tools)
    p2 = figure(plot_width=300,tools=tools,)
    p1.circle('t','Eu',source=source,size=1)
    p2.circle('Eu','Ez',size=1)
    return gridplot([[p1,p2]])

gp = znzt_ts()
output_notebook()
show(gp)
最佳答案
在他的评论中发布的link Adam向您展示了如何执行此操作:您需要将圆形渲染器的selection_glyph和nonselection_glyph设置为具有所需属性的字形.

在手册中,通过在p.circle(…,name =“mycircle”)调用中指定名称然后使用renderer = p.select(name =“mycircle”)来访问渲染器.当p.circle(…)函数返回渲染器时,您也可以保存对渲染器的引用:renderer = p.circle(‘t’,’Eu’,source = source,line_color = None).

获得渲染器的引用后,可以指定字形:

renderer.selection_glyph = Circle(fill_color='firebrick',line_color=None)
renderer.nonselection_glyph = Circle(fill_color='#1f77b4',fill_alpha=0.1,line_color=None)

import numpy as np
from pandas import DataFrame
from bokeh.plotting import figure,widgets
from bokeh.models.glyphs import Circle

def znzt_ts():#,Box_select'
    source = ColumnDataSource(data=ts)
    original_source = ColumnDataSource(data=ts)

    selection_glyph = Circle(fill_color='firebrick',line_color=None)
    nonselection_glyph = Circle(fill_color='#1f77b4',line_color=None)

    p1 = figure(plot_width=300,tools=tools)
    r1 = p1.circle('t',line_color=None)
    r1.selection_glyph = selection_glyph
    r1.nonselection_glyph = nonselection_glyph


    p2 = figure(plot_width=300,tools=tools)
    r2 = p2.circle('Eu',line_color=None)
    r2.selection_glyph = selection_glyph
    r2.nonselection_glyph = nonselection_glyph
    return gridplot([[p1,p2]])

gp = znzt_ts()
output_notebook()
show(gp)

猜你在找的JavaScript相关文章