python - 散景:在轴刻度标签中使用 HTML?
问题描述
我对散景很陌生。我试图在我的一个图上添加可点击的链接,更准确地说是在 x 轴上(在刻度上)。
我的问题:是否可以在刻度标签中使用 HTML 代码,例如用超文本链接替换文本?
以 Bokeh 文档中的一个示例为例,这是我的幼稚尝试(替换其中一个标签,从Apples
to <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>
写成文本的情节......
我应该如何继续拥有正确的超文本链接?
解决方案
最简洁的答案是不。Bokeh 在 HTML Canvas 上进行渲染,这是一个低级位图绘图区域。HTML 画布不直接支持其上的任何 DOM 类型元素(例如超链接)。
可能有几种方法可以解决这个问题:
Bokeh 是可扩展的 您可以创建一个自定义扩展,以完全不同的方式呈现刻度,即通过将真实 Div 绝对定位在画布顶部而不是发出画布绘图命令。这将需要大量的簿记和精确定位。我不会将其描述为微不足道的,并且可能需要一些来回的迭代才能开始工作,因此公共邮件列表将是讨论这种可能性的更好地方。
有一个未解决的问题:添加对相关分类轴上的点击事件的支持。如果实现了这一点,它将提供类似的功能(但没有实际的超链接)。有可能这个想法可以扩展到包括任何刻度标签,而不仅仅是分类标签。提供有关此潜在功能的反馈的最佳位置是 GitHub 链接。
#601
推荐阅读
- java - Tibco 的 Appdynamics 工具 - 如何为每个 JVM 动态配置唯一节点名称
- sql - 将未定义设置为 BIT 值
- javascript - 匹配带有前导星号或尾随星号的行的正则表达式
- c# - C# Null 合并运算符在 Null 和空集合之间与 OR 运算符结合时表现不同
- python - 带有判别器编译问题的 VAE
- jquery - 提交表单外的div内容
- css - 在 Safari 中使用 CSS 选择 HTML 中的居中文本
- reactjs - rn-fetch-blob 错误:RNFetchBlob.fetchBlobForm 未能创建请求正文
- java - Apache DBCP defaultQueryTimeout 需要哪些单位?
- javascript - jQuery 到 JavaScript(在另一行之后插入行)