【问题标题】:Bokeh: use HTML in axis tick labels?散景:在轴刻度标签中使用 HTML?
【发布时间】:2018-07-04 23:47:44
【问题描述】:

我对散景很陌生。我试图在我的一个图上添加可点击的链接,更准确地说是在 x 轴上(在刻度上)。

我的问题:是否可以在刻度标签中使用 HTML 代码,例如用超文本链接替换文本?

以 Bokeh 文档中的一个示例为例,这是我的幼稚尝试(替换其中一个标签,从 Apples<a>Apples</a>):

from bokeh.io import show, output_file
from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral6
from bokeh.plotting import figure

output_file("bar_colors.html")

fruits = ['<a>Apples</a>', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
counts = [5, 3, 4, 2, 4, 6]

source = ColumnDataSource(data=dict(fruits=fruits, counts=counts, color=Spectral6))

p = figure(x_range=fruits, y_range=(0,9), plot_height=350, title="Fruit Counts",
           toolbar_location=None, tools="")

p.vbar(x='fruits', top='counts', width=0.9, color='color', legend="fruits", source=source)

p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = "top_center"

show(p)

正如您可能已经猜到的那样,它会导致我将&lt;a&gt;Apples&lt;/a&gt; 写成文本...

我应该如何获得正确的超文本链接?

【问题讨论】:

    标签: python bokeh


    【解决方案1】:

    简短的回答是否定的。 Bokeh 在 HTML Canvas 上进行渲染,这是一个低级位图绘图区域。 HTML 画布不直接支持其上的任何 DOM 类型元素(例如超链接)。

    可能有几种方法可以解决这个问题:

    • Bokeh is extensible 您可以创建一个自定义扩展,以完全不同的方式呈现刻度,即通过将真实 Div 绝对定位在画布顶部而不是发出画布绘图命令。这将需要大量的簿记和精确定位。我不会将其描述为微不足道的,并且可能需要一些来回迭代才能开始工作,因此public mailing list 将是讨论这种可能性的更好地方。

    • 有一个相关的未解决问题#601: Add support for click events on categorical axes。如果实现了这一点,它将提供类似的功能(但没有实际的超链接)。有可能这个想法可以扩展到包括任何刻度标签,而不仅仅是分类标签。提供有关此潜在功能的反馈的最佳位置是 GitHub 链接。

    【讨论】:

    • 感谢您的快速回答,这就是我的想法。我会尝试找到解决方法。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2021-06-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2020-03-30
    相关资源
    最近更新 更多