代码之家  ›  专栏  ›  技术社区  ›  Guido

在Bokeh绘图中选择文本

  •  1
  • Guido  · 技术社区  · 7 年前

    我希望能够在我的博克情节中搜索特定的词。假设我有一个非常简单的情节:

    import numpy as np
    from bokeh.plotting import figure, show, output_file
    
    x = np.linspace(0, 4*np.pi, 100)
    y = np.sin(x)
    
    TOOLS = "pan,wheel_zoom,box_zoom,reset,save,box_select"
    
    p1 = figure(title="Some sample title", tools=TOOLS)
    p1.circle(x,y, legend="sin(x)")
    
    output_file("legend.html", title="legend.py example")
    show(p1)
    

    这导致

    enter image description here

    我希望能够使用[ctrl+f]或[cmd+f]在浏览器中搜索文本。有什么办法吗?我希望能够搜索标题和/或标签,因此在本例中,示例查询将是{sample,title,1,0.5}之一。当然,这个例子是假设的,但我认为足以说明这个问题。

    有没有办法在Bokeh图中使用浏览器搜索功能?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Christian Hudon    7 年前

    目前在Boken中无法做到这一点,因为它会渲染到HTML5画布对象,所以浏览器只能看到渲染的最终结果。如果您愿意使用Bokeh的姐妹库HoloViews,那么它同时具有Bokeh和SVG后端。当通过SVG后端呈现时,浏览器将可以访问所有文本元素。

    为了帮助评估绘图库,看看它们是否适合您的目的,您需要的基本上是一个SVG后端。通常很容易在每个库的文档中找到受支持后端的列表。

    还请注意,“让浏览器可以访问所有单独的打印元素”和“打印大量数据点”是相互冲突的目标。HTML5Canvas后端可以很好地绘制大量数据(使用datashader更是如此) 因为 它仅向浏览器显示最终打印图像。如果要向浏览器公开绘图的详细信息(例如,通过SVG后端),与HTML5画布后端相比,如果绘图变得更大(更多数据)或更复杂,则应该期望在某个时候看到性能的提高。

        2
  •  1
  •   bigreddot    7 年前

    没有办法做到这一点。Bokeh图不是文本DOM元素,所有内容都在HTML光栅画布上渲染,浏览器仅将其视为RGBA像素的矩形区域。