【问题标题】:Use hyperlinks and add extra notes to each dot in the graph使用超链接并为图表中的每个点添加额外的注释
【发布时间】:2018-04-14 03:48:46
【问题描述】:

我正在使用 pygraphviz(我不想使用其他库)。

我正在创建一个带有 url 的图表,我希望它们可以点击并将我发送到浏览器中的那个 url。 当我将鼠标悬停在该链接上时,我还想为每个链接添加额外的注释。

这是我的代码的一部分(使用 example.com):

from pygraphviz import *

A = AGraph()
styles = {
    'graph': {
        'label': 'Example',
        'fontsize': '20',
        'fontcolor': 'white',
        'bgcolor': '#333333',
        'rankdir': 'BT',
    },
    'nodes': {
        'fontname': 'Helvetica',
        'shape': 'hexagon',
        'fontcolor': 'white',
        'color': 'white',
        'style': 'filled',
        'fillcolor': '#006699',
    },
    'edges': {
        'style': 'dashed',
        'color': 'white',
        'arrowhead': 'open',
        'fontname': 'Courier',
        'fontsize': '20',
        'fontcolor': 'white',
    }
}

edges = [("https://example.com/", "https://example.com/videos"),
         ("https://example.com/", "https://example.com/videos"),
         ("https://example.com/", "https://example.com/search"),
         ("https://example.com/", "https://example.com/videos?sort=likes-down"),
         ("https://example.com/", "https://example.com/videos?sort=views-down"),
         ("https://example.com/", "https://example.com/videos?sort=duration-down"),
         ("https://example.com/", "https://accounts.example.com/free-signup"),
         ("https://example.com/", "https://accounts.example.com/login")]

A.add_edges_from(edges)
A.draw('example.pdf', prog='fdp')

如果可能,我希望能够点击所有链接并使用 pdf。

此外,当我悬停时,我想显示有关该链接的额外注释。

【问题讨论】:

  • 您能澄清一下您所说的“额外注释”是什么意思吗?此外,大多数 PDF 查看器不支持这种交互性。

标签: python pygraphviz


【解决方案1】:

向图形节点添加超链接和工具提示非常简单:

nodes = [
    "https://example.com/",
    "https://example.com/search",
    "https://example.com/videos",
    "https://example.com/videos?sort=duration-down",
    "https://example.com/videos?sort=likes-down",
    "https://example.com/videos?sort=views-down",
    "https://accounts.example.com/free-signup",
    "https://accounts.example.com/login"
]

for (i, node) in enumerate(nodes):
    A.add_node(node, href=node, tooltip=f'node #{i}')
但是,这些不会使用所有输出格式。 graphviz文档指出,the href attribute only works in the SVG, map (image map) and PostScript output formats(它在PDF中工作,因为它显然被视为PostScript的个人资料),而the tooltip attribute works only in the SVG and cmap (client-side/HTML image map) formats。无论如何,大多数PDF读者都可能不支持除超链接之外的任何类型的交互性。 (并考虑没有任何“悬停”的概念的设备。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-14
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多