Luk*_*cky 7 python matplotlib hyperlink
我使用 matplotlib 在 Python 中创建了一个绘图。在注释每一行之后,我想让标签成为一个超链接(或者,让该行本身成为一个超链接)。文本项有一个名为“url”的属性,但我已经尝试过,但我不知道它有什么作用,如果有的话。
是否可以将文本或线条对象制作成超链接?
此示例展示了在输出 SVG 时如何设置超链接。请注意,这仅对 SVG 有意义。如果情节只是一个图像,它只是一个图像,图像中不能有超链接。
如果您希望能够在交互式绘图窗口中单击对象并使其充当超链接,您可以创建一个事件处理程序来处理“pick”事件,并打开浏览器或其他任何东西。有关如何执行选择事件,请参阅此示例。Matplotlib 绘图不是网页,甚至不是真正的文档,它们只是显示图形的窗口,因此它们不支持超链接;使用选择事件,您可以通过在单击对象时打开 Web 浏览器来模拟超链接。
编辑:你是对的,它不起作用。似乎 URL 属性只能读取并用于某些类型的对象。谷歌搜索,我看到一些关于它的旧 matplotlib 邮件列表讨论,其中的想法似乎是逐渐为不同的艺术家类型添加 URL 支持,但我猜他们从来没有考虑过。我建议你在matplotlib bug tracker上提出一个关于这个的错误。
与此同时,有一种方法可以做到这一点,但它有点迂回。URL 是为 PathCollection 对象绘制的,因此您可以从文本中创建一个 Path,然后从该路径中创建一个 PathCollection,然后将该 PathCollection 添加到您的绘图中。下面是一个例子:
pyplot.scatter([1, 2, 3], [4, 5, 6])
t = mpl.text.TextPath((2, 4), 'This is text', size=0.1)
pc = mpl.collections.PathCollection([t])
pc.set_urls(['http://www.google.com'])
ax = pyplot.gca()
ax.add_collection(pc)
pyplot.draw()
f = pyplot.gcf()
f.canvas.print_figure('fig.svg')
Run Code Online (Sandbox Code Playgroud)
请注意,您必须使用set_urls而不是set_url. 此方法生成带有可点击文本的 SVG,但它有一些缺点。最值得注意的是,您似乎必须在数据坐标中手动设置文本大小,因此可能需要费些功夫才能找到相对于绘制数据的大小而言不是太大或太小的文本大小。