You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib散点图的点元素中嵌入超链接

散点图挂载超链接的两种实现方式

方案1:直接给散点元素批量设置链接(推荐)

matplotlib中scatter()方法返回的PathCollection本身就是Artist子类,原生支持批量设置超链接,不需要额外添加空白文本元素,实现更简洁:

import matplotlib.pyplot as plt

# 示例坐标数据
x = [1,2,3,4,5]
y = [2,3,1,4,2]
# 每个点对应的超链接,顺序和点的顺序一一对应,替换为实际跳转地址即可
urls = [
    "你的链接1",
    "你的链接2",
    "你的链接3",
    "你的链接4",
    "你的链接5"
]

fig, ax = plt.subplots()
# 散点大小可以适当调大,方便后续点击
scatter_artist = ax.scatter(x, y, s=100)
# 批量给所有散点绑定超链接
scatter_artist.set_urls(urls)

# 仅保存为svg、pdf等矢量格式时超链接才会生效,png、jpg等位图格式不支持内嵌跳转链接
plt.savefig("带超链接的散点图.svg")
plt.show()

方案2:空白文本元素挂载链接

如果你偏好这种实现方式,也可以通过在散点位置叠加透明空白文本的方式绑定链接,实现逻辑如下:

import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [2,3,1,4,2]
urls = [
    "你的链接1",
    "你的链接2",
    "你的链接3",
    "你的链接4",
    "你的链接5"
]

fig, ax = plt.subplots()
ax.scatter(x, y, s=100)

# 遍历每个点叠加透明文本
for xi, yi, target_url in zip(x, y, urls):
    # 文本内容为空、透明度设为0,调整字号保证点击区域和散点重合
    blank_text = ax.text(xi, yi, "", alpha=0, fontsize=20)
    blank_text.set_url(target_url)

plt.savefig("文本挂载链接的散点图.svg")
plt.show()

注意事项

  • 只有svg、pdf这类支持交互的矢量格式可以保留超链接,导出为位图格式会丢失跳转能力
  • 所有继承自Artist类的matplotlib元素(折线、柱子、图例、注释等)都支持调用set_url()方法单独绑定超链接
  • 如果需要在Jupyter Notebook中实现点击跳转,需要配置输出为svg格式,同时解除Notebook的svg渲染限制

内容的提问来源于stack exchange,提问作者NYezhov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:15:04