美文网首页KG
Neo4j图形算法:可视化映射图

Neo4j图形算法:可视化映射图

作者: 今天无Bug | 来源:发表于2019-05-19 21:04 被阅读0次

原文链接: https://markhneedham.com/blog/2018/10/31/neo4j-graph-algorithms-visualise-projected-graph/

几周前,我写了一篇文章《使用加权PageRank找出史上最优秀的网球运动员》,在那篇文章中,我使用了一个映射可信图。而本文我将详细介绍一下这个映射可信图。

正如我在那篇文章中所指出的,大部分图模型在进行图算法运行时,与图算法所期待的模型是不匹配的,所以,我们需要映射出一个新的图,来运行图算法。

在当前示例中,PageRank算法是运行在‘可信图’的基础上的,可信图中每个结点的可信度依赖于传入的关系,可信度的值则取决于这些关系上的weight属性。

对于网球图而言,开始的图是由比赛、胜者、负者所组成,然后使用下面的语句派生出一个可信图:

MATCH (p1)<-[:WINNER]-(match)-[:LOSER]->(p2)
RETURN id(p2) AS source, id(p1) AS target, count(*) as weight

接着,我们继续使用费德勒和纳达尔比赛的例子来看他们是如何作用的,如果我们要查询费德勒赢的比赛的情况,只要将“费德勒”名字赋值给p1,“纳达尔"赋值给p2,查询语句如下:

MATCH (p1:Player {name: "Roger Federer"})<-[:WINNER]-(match)-[:LOSER]->(p2:Player {name: "Rafael Nadal"})
RETURN id(p2) AS source, id(p1) AS target, count(*) as weight

查询结果如下:

╒════════╤════════╤════════╕
│"source"│"target"│"weight"│
╞════════╪════════╪════════╡
│7 │124 │15 │
└────────┴────────┴────────┘

如果想得到纳达尔赢得比赛的情况:

MATCH (p1:Player {name: "Rafael Nadal"})<-[:WINNER]-(match)-[:LOSER]->(p2:Player {name: "Roger Federer"})
RETURN id(p2) AS source, id(p1) AS target, count(*) as weight

查询结果如下:

╒════════╤════════╤════════╕
│"source"│"target"│"weight"│
╞════════╪════════╪════════╡
│124 │7 │23 │
└────────┴────────┴────────┘

可视化这个映射图之后就很容易理解了。我们可以使用APOC库中的方法来进行可视化映射图。

看下面的查询语句:

MATCH (p1)<-[:WINNER]-(match)-[:LOSER]->(p2)
WITH p2, p1, count(*) AS count
CALL apoc.create.vRelationship(p2,"BEATEN_BY",{count:count},p1) yield rel
RETURN p2, p1, rel

前两行与之前查询语句没有什么区别,但第三行我们在两个运动员结点之间创建的虚拟关系,这个语句运行之后产生的映射图比较大,所以,我们先产生个小的的映射图,只包含一些著名的运动员。

首先 我们创建一个参数,仅包括那些著名的运行员。

:params players => ["Roger Federer", "Andy Murray", "Novak Djokovic", "Rafael Nadal", "Alexander Zverev", "Pete Sampras", "Andre Agassi", "John McEnroe", "Yevgeny Kafelnikov"]

接下来,我们让这些运行员之间的比较结果可视化:

MATCH (p1)<-[:WINNER]-(match)-[:LOSER]->(p2)
WHERE p1.name in $players AND p2.name IN $players
WITH p2, p1, count(*) AS count
CALL apoc.create.vRelationship(p2,"BEATEN_BY",{count:count},p1) yield rel
RETURN p2, p1, rel

运行之后得到下图: 

相关文章

  • Neo4j图形算法:可视化映射图

    原文链接: https://markhneedham.com/blog/2018/10/31/neo4j-grap...

  • Neo4j算法介绍

    neo4j为图数据库,其中涉及的也就为图算法,图算法被用来度量图形,节点及关系。 在neo4j中,通过call a...

  • Neo4j 图形数据库(2)

    今天继续更新有关 neo4j 图形数据基本操作。 先谈一谈Neo4j 图形数据库应用 图计算和图数据库会用在很多场...

  • Spring Data Neo4j(二)

    什么是SDN Spring Data Neo4j 简称SND,是一个对象-图形映射(OGM)框架,是为了简化开发者...

  • neo4j之图计算

    如何通过neo4j做图计算 spark中graphx对neo4j的数据进行读取,然后通过graphx的相关算法进行...

  • 主流图数据库Neo4J、ArangoDB、OrientDB综合对

    1: 本地存储方式2: 内置查询语言分析3: 性能分析4: 图算法支持 本地存储方式 Neo4J neo4j数据库...

  • Neo4j的算法库安装和调用说明(algo)

    上一文中,进行了Neo4j的图算法的简单介绍,展现Neo4j存的大量优秀的算法。默认不支持,如果通过插件安装来使用...

  • 柱状图

    可视化中,常规的图形很多,但是,合适的图形展示,是可视化的关键,这篇文章先讲讲柱状图的使用,以及各种各样的柱状图用...

  • R可视化:基础图形可视化之Ranking(五)

    数据分析的图形可视化是了解数据分布、波动和相关性等属性必不可少的手段。数据排列可视化图形主要有:条形图、雷达图、词...

  • 图形算法可视化

    最近看了一些和图形、算法可视化相关的文章和代码,挺有意思,于是自己也学着做了些东西。 迷宫生成算法 迷宫小时候玩过...

网友评论

    本文标题:Neo4j图形算法:可视化映射图

    本文链接:https://www.haomeiwen.com/subject/yxfczqtx.html