-1

我有一个表,表示网络中的节点及其路径。所以它基本上是一个图表。

像这样的东西:

              Path (tablename)
Destination        Nodes           Edges

China                13              1
China                16              2
China                1               3
Australia            13              1
Australia            234             2

所以这意味着,要到达中国,你必须通过节点 13,16 和 1。路径由边表示。所以

China : 13->16->1
Australia: 13->234

现在,像 gephi 这样的图形软件可以轻松地将这些数据导入其应用程序以自动绘制图形。但无论如何,我的陈述并不符合他们所拥有的。要在 grephi 中构建图表,我需要一个名为

节点:包含节点列表(例如 13、16、1、13)

边缘:包含节点之间的连接,例如:

             Edges
     From               To
eg    13                 16
      16                 1

所以我的问题是,有什么更好的方法可以从我已经拥有的东西中获得这种表示?这是否意味着创建这两个表,如果是这样,我如何使用该模式自动化该过程?还是我应该提取数据然后将其解析为 gephi 图形格式?

4

1 回答 1

1

这取决于您使用这些数据的目的。如果除了 gephi 之外还有其他用途,最好将数据保留为当前格式并使用 SELECT 语句提取节点和边:

-- All nodes
SELECT DISTINCT node FROM path;

-- All edges
SELECT DISTINCT a.node from_node, b.node to_node
FROM path a, path b
WHERE a.destination = b.destination
  AND a.edge = b.edge - 1;

如果您仅将数据用于图表,则可以创建 2 个表并使用相同的 SELECT 语句通过 INSERT 语句填充它们。喜欢:

CREATE TABLE nodes (node INTEGER PRIMARY KEY);
INSERT INTO nodes SELECT DISTINCT node FROM path;

CREATE TABLE edges (from INTEGER NOT NULL, to INTEGER NOT NULL, UNIQUE(from,to));
INSERT INTO edges SELECT DISTINCT a.node, b.node ...
于 2014-01-11T22:17:02.553 回答