本文代码和数据等,会等下一篇实战文章更新后一起放在 github/DesertsX 上,敬请期待!

前言

话说之前片刻老哥(群主/组织负责人之一)在 ApacheCN 中文开源组织 的机器学习群(qq 群:629470233)里问我下面这个项目(见于:安利一个惊艳的红楼梦可视化作品)研究的如何,我答曰那时安利过后仅分析了下该红楼梦关系图谱的 json 数据,并曾兴致高昂地写下左手读红楼梦,右手写BUG,闲快活一文。

再是不久前爬取明星相互关系的数据(还是那句话数据质量不一定多高,仅为练手),以供 neo4j 上手操练之用,并写有详细的入门教程: 一文教你用 Neo4j 快速构建明星关系图谱,而 neo4j 是赫然写在 grapheco/InteractiveGraph 这一开源项目的 github 介绍中的。

除此之外,再无有过多研究,只说来日因缘际会再去看看。虽然有因为不懂前端等技术、难以上手“官方教程”而推脱日后再研究之意,但或许更多地是古柳深信没准哪一天就有人助我填补了自身浅薄的知识与酷炫的开源项目之间的鸿沟,然后就像往昔文章中常常提到的“因缘际会”四字一般,一切自然而然地得以解决,新技能得以 get 了!

股票图谱

正所谓:“无巧不成书”,世上就果真有那么巧的事,没几日就看到利用 Tushare 数据实现知识图谱效果这篇新近出炉的文章(感谢作者提供完整代码和数据,下文将补上自己实践明星关系图谱的代码和数据后,统一开源供大家学习),原作者调用 Tushare API 接口,拿到股票及其最基础的属性数据,如股票所属地区 area、所属工业类别 industry 和所属板块 market 等。

将其转换成开源项目 grapheco/InteractiveGraph 所需的数据格式(上述代码均在 stock-demo.py 中,如果只是关心可视化结果,可以略过上述步骤,因为转换后的数据已经存在于webapp\static\stock_graph.json) ,运行 webapp\app_run.py ,打开 http://127.0.0.1:5000/graph/relation?stock1=平安银行&stock2=招商银行 就能看到漂亮的图谱,可改成其他股票名称查看效果。

以上,差不多就是全部流程了,如果你只是想了解下该项目是如何实现的,其实知道这么多就够了,真的非常简单,前端的东西都是现成的,只需要准备好数据,套用一下模板,就能拿出去“装逼”了。

热身一下

而如果你想更进一步应用到自己的数据上,并且像开头红楼梦项目一样加上图像的话(有图真的灵动好看很多),那么下面的实战部分将帮你实现这个愿望!

首先是用片刻老哥手动构造的关于 ApacheCN 中文开源组织 的小数据集 apachecn-basic.csv 热热身,当然我在此基础上将每个人的图像由统一的绿帽头盔图(老哥对绿帽真的情有独钟呢)改成了各人的 qq 头像,并在 webapp\static\images\person\ 文件夹下保存好相应图片;

注意:这里每一行是每个 person 对应每个 project (如:ml/dl/kaggle)的格式,所以单个 person 可能出现很多行

id,person,image,area,project,info
1,那一抹微笑,static/images/person/那一抹微笑.jpg,北京,kaggle,那一抹微笑
1,那一抹微笑,static/images/person/那一抹微笑.jpg,北京,ml,那一抹微笑
1,那一抹微笑,static/images/person/那一抹微笑.jpg,北京,dl,那一抹微笑
2,片刻,static/images/person/片刻.jpg,北京,ml,世界很美,而你正好有空
2,片刻,static/images/person/片刻.jpg,北京,kaggle,世界很美,而你正好有空
2,片刻,static/images/person/片刻.jpg,北京,dl,世界很美,而你正好有空
3,瑶妹,static/images/person/瑶妹.jpg,北京,kaggle,瑶妹
3,瑶妹,static/images/person/瑶妹.jpg,北京,ml,瑶妹
3,瑶妹,static/images/person/瑶妹.jpg,北京,dl,瑶妹
4,飞龙,static/images/person/飞龙.jpg,上海,ml,飞龙
4,飞龙,static/images/person/飞龙.jpg,上海,ml,飞龙
4,飞龙,static/images/person/飞龙.jpg,上海,ml,飞龙
5,咸鱼,static/images/person/咸鱼.jpg,北京,kaggle,咸鱼
5,咸鱼,static/images/person/咸鱼.jpg,北京,dl,咸鱼
复制代码

接着运行 apachecn-demo.py ,照旧将 csv 数据转换成所需的 json 格式, 存于webapp\static\apachecn-demo.json ,因为本次实战明星关系图谱的数据转换代码不同于片刻老哥的,所以此处不做详细介绍,大家可自行理解,不懂的可以去找他请教(你有福了,群主叫你晚上去他房间.avi);

当然由于后续我的版本将用 pandas 结合手头的项目手动一步步处理数据,可能不是很方便大家直接套用到自己的数据上,所以还是推荐搞懂 apachecn-demo.pystock-demo.py,更好地实现可重用的函数。

至于为什么我不是按照这里的代码去处理数据,而非要自行实现,实在是因为明星相互关系的数据和上述股票和组织的数据都不太一样,具体差异后续再说。

扯回来,有了 json 数据后,其实还需要插入下面一段玄妙的 JavaScript 代码(这段 translator 打头的代码可插在 categoriesdata 之间,可去文件中查看),至于为什么不一并在转换数据的代码中一并实现?

"translator": {"nodes": function (node) {//set descriptionif (node.description === undefined) {var description = "<p align=center>";if (node.image !== undefined) {description += "<img src='" + node.image + "' width=150/><br>";}description += "<b>" + node.label + "</b>" + "[" + node.id + "]";description += "</p>";if (node.info !== undefined) {description += "<p align=left>" + node.info + "</p>";} else {if (node.title !== undefined)description += "<p align=left>" + node.title + "</p>";}node.description = description;}},},
复制代码

对此菜鸡的片刻老哥和我都表示“非不为也,实不能也”,说人话就是“不会!”那也是很无奈了,只求万能的读者去实现了。

薛定谔的好消息

当然还有一个可能算是“薛定谔的好消息”是,片刻老哥去该项目的 github 提了 iusse :是否可以将 gson 中的function 写到 html 页面的script中?

然后......然后项目贡献者可能手头正好有新版本的代码,于是顺势把代码从 InteractiveGraph 0.1.1 版本更新到了 InteractiveGraph 0.2.0

新版本的第二个特性是 Optimize the code,结合上面 issue 里的回复应该是不再需要在 json 里加那段玄妙的 JS 代码了,当然因为本次实践都还是基于旧版本的,所以依然需要手动加上。

在此讲述下这个插曲,方便后来人了解区别,可资选择。

再次说回数据准备好后,只需要将要渲染的 webapp\templates\apachecn-demo-relation.html里要加载的 json 文件名改成对应的即可。

至于这个 html 文件上面并没有提及,因为股票一例各方面都是匹配的,所以先行略过,等实战时需要修改了再涉及。

而回到 grapheco/InteractiveGraph 上来,原始开源项目支持三种模式:GraphNavigatorGraphExplorerRelFinder。股票一例是第三种,下图是第一种也是本次明星关系图谱将要实现的模式。

三种模式分别对应 example1.htmlexample2.htmlexample3.html,差别主要在于 <script>...</script> ,因为只是套用模板,所以想要那个,就复制一份对应 html 文件,改下文件名和里面 json 路径即可。

最后只需在 webapp\views\graph_view.py 里加上几行代码,使得访问对应网址时能成功渲染出相应 html 即可。没接触的前端的读者需要注意,@graph.route('') 里怎么加网址就会怎么办,比如此处对应网址就是 http://127.0.0.1:5000/apachecndemo。

@graph.route('/apachecndemo')
# 不要写成 /graph/relation/apachecndemo
# 否则加载图片时无法显示
def apachecndemo():return render_template('apachecn-demo-relation.html')
复制代码

最后运行 webapp\app_run.py,打开对应网址,就行了。虽然扯了这么多,才出现这么个破图,但一切瞎扯都是值得的。

毕竟更酷炫的明星关系图谱,差不多也就是这么个流程,先放张效果图(和略大的GIF动图)

,下一篇文章再好好讲实战吧,这篇文章也是越写越飞、越写越歪、越扯越长,光顾着调侃片刻老哥,不过也确实绕不过去了。

再者想把全部内容都塞到一篇文章里也过于冗长,这样一分为二,倒也未为不可。

小结

最后再总结下几个关键步骤:

  1. 有一份 csv 或其他格式的想要图谱可视化的数据,想显示图像的,也需要准备好;
  2. 写代码将其转换成所需的 json 格式(虽然文章里一直也没讲数据格式到底如何,但相应链接的文章或文件里总有涉及),并手动加上那段关键的 JavaScript 代码;
  3. 修改对应 html 以及 graph_view.py 文件;
  4. 运行 app_run.py ,打开对应网页即可。

InteractiveGraph 实现酷炫关系图谱之前瞻相关推荐

  1. 部署明星关系图谱那些事儿(GitHub Pages)

    时光飞逝,距离发布上一篇文章 InteractiveGraph 实现酷炫关系图谱之前瞻 已经过去了近两个月,嘴上说着会马上把实战"娱乐圈明星关系图谱"的代码开源到 github/D ...

  2. 如何利用pyecharts绘制炫酷的关系网络图?

    如何利用pyecharts绘制炫酷的关系网络图 这是本学期在大数据哲学与社会科学实验室做的第六次分享了. 第一次分享的是: 如何利用"wordcloud+jieba"制作中文词云? ...

  3. 把梯度下降算法变成酷炫游戏,这有一份深度学习通俗讲义

    公众号关注 "视学算法" 设为"星标",第一时间知晓最新干货~ 晓查 发自 凹非寺 转载自量子位 | 公众号 QbitAI 让小球滚下山坡,找到它们分别落在哪个 ...

  4. 行业思考 | 酷炫动效是否利于你的产品设计?

    本文为PMCAFF专栏作者南可出品 前言 写这篇文章的起因是前段时间在Meidum上读到的一篇驳斥dribbble发展现状的文章.文章发表在16年,其中提到:"我不认为dribbble解决了 ...

  5. Vue.js 打造酷炫的可视化数据大屏

    可视化技术与 Vue 介绍 实验介绍 在本节实验中,将对可视化技术的应用场景.发展历程进行介绍,让大家对可视化技术有一个基础的概念.随后将介绍如今流行的可视化框架与其之间的优缺点对比.最后介绍 Vue ...

  6. 使用 QuickBI 搭建酷炫可视化分析

    随着各行各业大数据的渗透,BI 类数据分析需求与日俱增,如何让可视化更好的展现数据的价值,是 BI 类产品一直努力的方向.对此国内外的BI产品都有自己的方法,如国外大牌的 PowerBI.Tablea ...

  7. android view设置按钮颜色_Android 酷炫自定义 View:高仿 QQ 窗帘菜单

    作者:大公爵 链接:https://www.jianshu.com/p/cdb3d373fe37 介绍 不知道大家是否有印象,QQ 曾经有个版本用到了一种双向侧拉菜单,就像窗帘一样可以两边开合,并且伴 ...

  8. 图说可视化,报表也能做得如此酷炫!

    1.数据可视化概述 1.1.数据可视化的作用 数据可视化是指将数据通过图表的方式传递出来,让用户能够快速.准确地理解信息所要表达的内容,从而提高沟通效率.数据可视化的作用主要有: 1)传递更多的信息, ...

  9. 不了解喜欢的明星有什么关系?教你用Neo4j 快速构建明星关系图谱,让你比他自己还了解

    前言 本文将带你用 neo4j 快速实现一个明星关系图谱,因为拖延的缘故,正好赶上又一年的4月1日,于是将文中的几个例子顺势改成了"哥哥"张国荣.正所谓"巧妇难为无米之炊 ...

最新文章

  1. 自动驾驶中基于车道线的高清制图方法回顾
  2. python判断括号有效,在Python中检查括号是否平衡
  3. 中山网络推广浅析网站优化在选择关键词时需要掌握的关键性原则是什么?
  4. linux组权限管理,linux 用户组权限管理(示例代码)
  5. python得到列表list的交集与差集
  6. Windows 安装 MongoDB 和 可视化工具Robo3T
  7. voxelnet_苹果最新机器学习论文:使用VoxelNet进行3D物体检测
  8. matlab scope 怎么调出,Matlab Figure图形保存以及Simulink中Scope窗口调出figure菜单
  9. 为什么你的MySQL跑得很慢?
  10. OpenCASCADE Expression Interpreter by Flex Bison
  11. 4.3-python爬虫之图形验证码识别
  12. 「干活」基因组组装 学习笔记 - 入门知识点和Genome Survey
  13. cadence ETS安装过程
  14. C语言中关键字typedef、enum的使用
  15. docker实现nginx反向代理、负载均衡
  16. 完美解决 iOS 中只旋转自己想要旋转的屏幕
  17. 单核CPU能够实现并行么?
  18. 人脸皮肤高清xyz贴图库分享
  19. 个人成长:简单写写《乔布斯传》读后感
  20. 【白板推导系列笔记】线性回归-最小二乘法及其几何意义最小二乘法-概率视角-高斯噪声-MLE

热门文章

  1. 5G+AI:影响未来的新趋势
  2. 构建生产机器学习系统的一些考虑
  3. 论文 | 图像和谐化公开数据集:让前景和背景更“般配”
  4. Python之父考虑重构Python解释器
  5. 2019全球AI争夺战最新汇总
  6. SAP MM 如下图,做发票校验的时候,对于非计划交货成本分摊到各个ITEM中,为什么分摊比例是1:2,而非1:6?
  7. Python 之 matplotlib (三)坐标轴
  8. Pytorch+CNN+猫狗分类实战
  9. Nat. Commun. 速递:虚拟颅内脑电与神经动力学模型
  10. “AI工厂”本质:AI基础设施及怎样将AI转化为运营动力