我对散景很陌生。我正在尝试在我的其中一个绘图上创建可点击的链接,更确切地说是在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)
您可能已经猜到,它是在将<a>Apples</a>
写为文本的情节中产生的。
我应该如何继续建立适当的超文本链接?
答案 0 :(得分:0)
简短的回答是“否”。 Bokeh在HTML Canvas上进行渲染,这是一个低级的位图绘制区域。 HTML画布上不直接支持任何DOM类型元素(例如,超链接)。
可能有几种解决方法:
Bokeh is extensible您可以创建一个自定义扩展名,以完全不同的方式呈现刻度线,即,将真正的Divs绝对定位在画布顶部,而不是发出画布绘制命令。这将需要大量簿记和精确定位。我不会将其描述为琐碎的事情,并且可能需要进行一些来回迭代才能开始工作,因此public mailing list将是讨论这种可能性的更好的地方。
有一个相关的未解决问题#601
: Add support for click events on categorical axes。如果实现了此功能,它将提供类似的功能(但没有实际的超链接)。这个想法可能会扩展到包括任何刻度标签,而不仅仅是分类标签。提供有关此潜在功能的反馈的最佳位置是GitHub链接。