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.tw', 'https://tutorialspoint.tw/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.tw/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.tw')

# 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
廣告