Matplotlib - 超链接



超链接,通常称为链接,是一个导航元素,以各种形式呈现,例如文本、图像、图标或按钮,位于文档或网页中。单击或激活时,超链接会将用户重定向到指定的 URL 或资源,从而创建无缝且交互式的体验。

Matplotlib 提供各种工具,用于在绘图中包含超链接。在本教程中,您将了解如何在 Matplotlib 绘图中添加超链接,例如 SVG 图形和 PdfPages。

创建带有超链接的 SVG 图形

SVG(可缩放矢量图形)是一种基于 XML 的图像格式,支持超链接。但是,必须注意的是,Matplotlib 中的超链接专门适用于 SVG 输出。如果绘图保存为静态图像(例如 PNG 或 JPEG),或在窗口中显示为绘图,则超链接功能将无法使用。

在这种情况下,您可以在具有可点击元素的交互式绘图中使用此功能。

示例

在此示例中,创建了一个散点图,并使用 set_urls 方法为各个数据点分配超链接。

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
s = plt.scatter([1, 2, 3], [4, 5, 6])
s.set_urls(['https://tutorialspoint.com', 'https://tutorialspoint.com/matplotlib/index.htm', None])
fig.savefig('scatter.svg')

输出

运行上述代码后,您可以在输出目录中检查 .svg 图片文件。

hyperlinks_ex1 GIF

在 PdfPages 中添加超链接

matplotlib 中的PdfPages 模块允许创建多页 PDF 文档。您可以使用 matplotlib 文本元素向这些 pdf 页面添加超链接。

示例

在此示例中,使用 PdfPages 创建了一个 PDF 文档,并将带有超链接的文本元素添加到绘图中。

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

msr_line4 = r'$\bf{' + 'Tutorialspoint\ Matplotlib\ Resource : ' + '}$' + "https://tutorialspoint.com/matplotlib/index.htm"
with PdfPages('Adding_hyperlink_inside_a_PdfPage.pdf') as pdf:
   plt.figure(figsize=(11, 8.5))

   ax2 = plt.subplot2grid((9, 5), (1, 0), rowspan=1, colspan=2)
   ax2.text(0, 0, msr_line4, fontsize=9)
   plt.axis('off')
   pdf.savefig()
   plt.close

输出

运行上述代码后,您可以在输出目录中检查 .pdf 文件。

hyperlinks_ex2 GIF

交互式绘图中的超链接

对于未渲染为 SVG 的绘图(例如在 Matplotlib 窗口中显示的交互式绘图),可以使用事件处理程序实现超链接。通过创建一个函数来处理“pick”事件,您可以定义在单击特定元素(如数据点)时要执行的操作。

示例

以下示例演示了如何在单击数据点时在 Web 浏览器中打开指定的超链接。

import matplotlib.pyplot as plt
import webbrowser

class CustomObject:
   def __init__(self, x, y, name):
      self.x = x
      self.y = y
      self.name = name

def on_pick(event):
   webbrowser.open('https://tutorialspoint.com')

# Create custom objects
obj_a = CustomObject(0.1, 0.3, "Object A")
obj_b = CustomObject(0.2, 0.5, "Object B")

# Plotting objects with picker attribute
fig, ax = plt.subplots()
for obj in [obj_a, obj_b]:
   artist = ax.plot(obj.x, obj.y, 'ro', picker=10)[0]
   artist.obj = obj

# Connect pick event to the handler
fig.canvas.callbacks.connect('pick_event', on_pick)

plt.show()

输出

观看下面的视频了解输出的样子。

hyperlinks_ex3 gif
广告