下面,我们将详细介绍如何实现以上案例的可视化效果。
准备Neo4j环境
对于初学者来说,Neo4j Sandbox简直是省时省力的学习神器。在云端免费申请一个Neo4j Sandbox的账号就可以开始您的Neo4j体验之旅了。
Neo4j Sandbox 地址:
Home - Neo4j Sandbox
本Demo使用的Sandbox为 “Women's World Cup 2019“ 数据集,启动后界面如下:
为数据集增加一些额外的属性,用于增强可视化效果。
为了能让数据中的Team节点有大小不同的可视化效果,我们将每个Team参加的比赛次数作为一个新的属性,写入到Team节点中。
在Sandbox界面中点击的蓝色的Open按钮,选择“Open with Browser”启动Neo4j Browser界面,运行以下Cypher语句。
match (t:Team)-[:PLAYED_IN]-(m:Match)
with t, count(distinct m) as matchs
set t.matchs= matchs
Cypher语句执行结束后,提示增加了36个属性。
通过以下一条简单的Cypher语句,我们可以查询展示Team(节点)参加了(关系:PLAYED_IN)哪些Match(节点)。当选中某个Team节点后,在左下角可以看到新增的属性matchs(参加比赛的次数)的值。(数据过滤显示前200条)
MATCH p=()-[r:PLAYED_IN]->() RETURN p LIMIT 200
在Neo4j Browser中显示的查询结果。
使用 Neovis.js 可视化以上数据结果
下载Github Neovis.js 代码包(https://github.com/neo4j-contrib/neovis.js/),复制位于example目录下的twitter-trolls.html 文件,粘贴并重命名为 football.html。参考Sandbox 中的Connection details信息,修改football.html文件中Neo4j数据库连接信息。
- server_url: "bolt://3.83.25.10:7687"
- server_user:"neo4j"
- server_password: "password"
football.html 代码参考:
<title>DataViz</title>
<style type="text/css">
#viz {
width: 900px;
height: 700px;
</style>
<script src="../dist/neovis.js"></script>
</head>
<script>
function draw() {
var config = {
container_id: "viz",
server_url: "bolt://3.83.25.10:7687",
server_user: "neo4j",
server_password: "password",
labels: {
"Team": {
caption: "name",
size: "matchs"
"Match": {
caption: "stage"
relationships: {
"PLAYED_IN": {
caption: false,
thickness: "score"
initial_cypher: "MATCH p=()-[r:PLAYED_IN]->() RETURN p LIMIT 200"
var viz = new NeoVis.default(config);
viz.render();
</script>
<body οnlοad="draw()">
<div id="viz"></div>
</body>
</html>
本地直接用浏览器运行football.html 的可视化效果:
在该可视化展示中,Team节点的大小通过matchs属性值来渲染,Team和Match的关系“PLAYED_IN”连线的粗细则由score属性值来渲染。更多复杂的可视化设置请参考代码包中的其他示例。
Neovis.js 示例包在Github的地址:GitHub - neo4j-contrib/neovis.js: Neo4j + vis.js = neovis.js. Graph visualizations in the browser with data from Neo4j.
vue+neo4j+(neovis.js / neo4j-driver)纯前端实现知识图谱的集成
一、Neovis.js 不用获取数据直接连接数据库绘图
二、 neo4j-driver 能够直接通过前端获取数据。
三、vis.js 绘图
四、 echarts绘图
neo4j是什么?
简单来说,这是一种比较热门的图数据库,图数据库以图形形式存储数据。 它以节点,关系和属性的形式存储应用程序的数据。 一个图由无数的节点和关系组成。
安装图数据库在这里就不介绍了,本篇主要介绍如何连接neo4j数据库,将知识图谱成功显示在前端页面中。
Neovis.js与Neo4j的连接非常简单明了,并且Neovis 的数据格式与那neo4j数据库保持一致。在单个配置对象中定义标签、属性、节点和关系的样式和颜色。
随着互联网不断的发展,传统的关系型数据库如oracle,mysql已经难以支撑现下大数据量,高并发的场景了。于是,NoSQL横空出世,有像cassandra这样的column-based,像MongoDB这样document-based。今天在这里猎奇的是一个graph-based的数据库,Neo4j。
Neovis.js将JavaScript可视化和Neo4j无缝集成。与Neo4j的连接非常简单明了,并且由于它是在Neo4j的属性图模型的基础上构建的,因此 Neovis 的数据格式与数据库保持一致。
图数据库是目前大数据领域最火热的方向,Neo4j则是图数据库中的领军者,占有过半的行业采用率。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。
Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
项目主要介绍cytoscape.js的使用方法:
1)构建静态html文件进行图谱展示
2)使用Python的django框架进行开发,并将后台业务逻辑生成的数据传送到前端js中进行展示,实现动态图谱构建,满足工程实际需要。
动态与静态图谱均整合至项目源码中,使用不同路由即可访问。
注:结合博客理解本项目更佳,运行项目前请看readme文件!
neo4j是一个优秀的图形数据库,可以方便地存储和处理图形数据。springboot是一种流行的Java开发框架,可以轻松地集成各种组件。Vue是一个流行的JavaScript框架,用于构建现代化的Web应用程序。D3.js是一个用于数据可视化的JavaScript库,它可以用来创建各种漂亮的图形和可视化方式。
通过结合neo4j、springboot、Vue和D3.js,我们可以轻松地构建和可视化运行知识图谱。我们可以使用neo4j来存储和查询各种实体和关系,比如人物、组织、事件等。使用springboot可以编写Java代码来连接数据库、处理查询和构建Web服务。Vue框架则可以用来构建前端页面和组件,以便用户可以通过Web浏览器和服务之间进行交互。D3.js库可以用来构建各种图形和可视化效果,以便用户可以更好地理解和探索知识图谱的数据。
为了构建知识图谱,我们需要首先定义实体和关系的模型,并使用Cypher语言来插入数据和查询数据。然后,我们可以通过springboot将数据库连接到Web服务,为用户提供API接口来查询和遍历图谱。最后,我们可以使用Vue框架来构建可交互性的前端页面,展示图谱和与用户进行交互。D3.js库可以用来构建各种图形和可视化效果,如力导向图、树状图、矩阵图等,以显示节点和关系之间的复杂关系。
总之,结合neo4j、springboot、Vue和D3.js可以轻松地构建和可视化运行知识图谱。这些工具和框架都具有丰富的功能和强大的生态系统,可以大大简化开发过程,快速构建高效、美观和易于扩展的知识图谱应用程序。
Neo4j 开发者大会 NODES 2022 活动日程已发布 - 11.16 ~ 11.17
Jennifer726:
【报名中】“图无处不在”系列活动:图数据平台助力出海安全合规
Jennifer726:
【报名中】“图无处不在”系列活动:图数据平台助力出海安全合规
Jennifer726: