【发布时间】:2019-01-10 11:11:42
【问题描述】:
在matplotlib,可以create SVG figures with hyperlinks。
例如,我可以使用scatter 方法来绘制标记,这样每个单独的标记都是一个超链接。
但是,我的一些标记具有我使用 text 方法创建的文本标签。我能以某种方式将文本标签也变成超链接吗?
到目前为止,我已经能够实现以下目标。首先,创建一个带有边界框的文本标签,以便bbox 字典有一个url 参数:
ax.text(x, y, label, bbox=dict(boxstyle=..., url=url))
然后稍微修补matplotlib/backends/backend_svg.py(版本1.1.1),替换
self.writer.end('</a>')
与
self.writer.end('a')
现在它几乎可以工作了。我可以单击 包围 文本的区域,但不能单击文本本身(否则,如果我在白色背景上有黑色文本,我可以单击白色部分的任意位置,但不能单击黑色部分)。
将整个文本标签转换为超链接(文本及其边界框)的最简单方法是什么?
理想情况下,我更喜欢不需要修补 matplotlib 库的解决方案。
【问题讨论】:
-
看起来你发现了一个错误。您介意在 github.com/matplotlib/matplotlib 问题跟踪器上报告它吗?如果您渴望,这也将做出相当可行的第一次贡献。 ;-) HTH
-
@pelson:嗯,
</a>部分当然是一个错误,如果有人修复它当然会很棒。但是,主要问题是缺少一些功能,我不知道这些功能是否会在 Matplotlib 中实现。我真的等不及了,因此我一直在寻找一些可以在我自己的代码中使用的技巧。我已经在做诸如后期处理 Matplotlib 生成的 SVG 代码之类的事情,所以我不介意这些技巧是否丑陋。 :)
标签: python hyperlink svg matplotlib