python、matplotlib、svg 和文本标签中的超链接

2023-12-21

In 绘图库 http://matplotlib.sourceforge.net/,有可能使用超链接创建 SVG 图形 http://matplotlib.sourceforge.net/examples/pylab_examples/hyperlinks.html.

例如,我可以使用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>')

with

self.writer.end('a')

Now it almost作品。我可以点击该区域包围文本,但不是文本本身(否则,如果我在白色背景上有黑色文本,我可以单击白色部分中的任意位置,但不能单击黑色部分)。


将整个文本标签转换为超链接(文本及其边框)的最简单方法是什么?

理想情况下,我更喜欢不需要修补 matplotlib 库的解决方案。


这个改变 https://github.com/matplotlib/matplotlib/commit/2d729773c8c9f4155831fe6cf510333fd536e260在 matplotlib git 中,可以将文本对象的 URL 字段渲染为渲染的 SVG 中的链接。

包括 @travc 的代码,这可能看起来像:

url = "https://matplotlib.org/"
txt = plt.text(x, y, url, url=url, bbox = dict(color='w', alpha=0.01, url=url)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python、matplotlib、svg 和文本标签中的超链接 的相关文章

随机推荐