# coding:utf8
import time
import json
import pprint
##################################################
# 第一部分 读取数据
##################################################
#字典定义六类实体
films = {}
characters = {}
planets = {}
starships = {}
vehicles = {}
species = {}
#读取电影链接
fr = open('films.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n')) #转换为字典
films[tmp['url']] = tmp
fr.close()
#读取人物数据
fr = open('film_characters.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
characters[tmp['url']] = tmp
fr.close()
#读取星球数据
fr = open('film_planets.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
planets[tmp['url']] = tmp
fr.close()
#读取飞船数据
fr = open('film_starships.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
starships[tmp['url']] = tmp
fr.close()
#读取装备数据
fr = open('film_vehicles.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
vehicles[tmp['url']] = tmp
fr.close()
#读取物种数据
fr = open('film_species.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
species[tmp['url']] = tmp
fr.close()
##################################################
# 第二部分 获取节点和边
##################################################
#定义节点和边
nodes = []
links = []
#nodes实体包括id(电影名称)、class、group、size
#links为电影与人物、星球、种族、装备、飞船的边
for key, value in films.items():
nodes.append({'id': value['title'], 'class': 'film', 'group': 0, 'size': 20})
#遍历value['characters'] 如果存在则建立一条电影到人物的边, 边的权重设置为3
#characters 人物
for item in value['characters']:
#python2的has_key在python3中删除
#if dict.has_key(word) => if word in dict
if item in characters:
links.append({'source': value['title'], 'target': characters[item]['name'], 'value': 3})
#planets 星球
for item in value['planets']:
if item in planets:
links.append({'source': value['title'], 'target': planets[item]['name'], 'value': 3})
#species 种族
for item in value['species']:
if item in species:
links.append({'source': value['title'], 'target': species[item]['name'], 'value': 3})
# starships
for item in value['starships']:
if item in starships:
links.append({'source': value['title'], 'target': starships[item]['name'], 'value': 3})
# vehicles
for item in value['vehicles']:
if item in vehicles:
links.append({'source': value['title'], 'target': vehicles[item]['name'], 'value': 3})
#建立人物的节点和关联
for key, value in characters.items():
nodes.append({'id': value['name'], 'class': 'character', 'group': 1, 'size': 5})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# planets
if value['homeworld'] in planets:
links.append({'source': value['name'], 'target': planets[value['homeworld']]['name'], 'value': 3})
# species
for item in value['species']:
if item in species:
links.append({'source': value['name'], 'target': species[item]['name'], 'value': 3})
# starships
for item in value['starships']:
if item in starships:
links.append({'source': value['name'], 'target': starships[item]['name'], 'value': 3})
# vehicles
for item in value['vehicles']:
if item in vehicles:
links.append({'source': value['name'], 'target': vehicles[item]['name'], 'value': 3})
for key, value in planets.items():
nodes.append({'id': value['name'], 'class': 'planet', 'group': 2, 'size': 16})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['residents']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in starships.items():
nodes.append({'id': value['name'], 'class': 'starship', 'group': 3, 'size': 8})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['pilots']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in vehicles.items():
nodes.append({'id': value['name'], 'class': 'vehicle', 'group': 4, 'size': 8})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['pilots']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in species.items():
nodes.append({'id': value['name'], 'class': 'species', 'group': 5, 'size': 14})
# planets
if value['homeworld'] in planets:
links.append({'source': value['name'], 'target': planets[value['homeworld']]['name'], 'value': 3})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['people']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
fw = open('starwar_alldata.json', 'w')
fw.write(json.dumps({'nodes': nodes, 'links': links}))
fw.close()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前文介绍了Python3抓取电影实体知识,Seaborn可视化展示电影信息,D3可视化布局,关系图谱基本构建。本篇文章将实现如下图所示的功能,主要包括: 1.建立两种模式,点击“节点”显示所有圆,点击“文字”显示实体名称 2.添加鼠标响应事件,选中某一个节点显示其相关的节点及边 3.鼠标放开恢复所有节点 --------------------- 作者:Eastmount 来源:CSDN 原文:https://blog.csdn.net/Eastmount/article/details/87116136 版权声明:本文为博主原创文章,转载请附上博文链接!
资源推荐
资源详情
资源评论
收起资源包目录
(best)完整代码.rar (44个子文件)
(best)完整代码
1.抓取数据集.png 375KB
2.Seaborn可视化.png 39KB
(2) 可视化 ShowPic_KG
show_height_mass.py 2KB
film_planets.csv 10KB
stat_basic.csv 1KB
film_species.csv 20KB
stat_character.csv 5KB
film_starships.csv 21KB
show_scatter.py 831B
get_jsonfils.py 756B
show_height_mass2.py 896B
get_jsondetails.py 732B
show_hist.py 582B
get_details.py 2KB
film_characters.csv 41KB
film_vehicles.csv 18KB
get_films.py 805B
films.csv 19KB
(5) D3+CSS绘制两种模式下鼠标拖动时间
main_kg4.html 14KB
starwar_alldata.json 89KB
(3-1) 获取json数据 neo4j_data
get_alldata_json-p3(success).py 6KB
film_planets.csv 10KB
film_species.csv 20KB
starwar_alldata.json 89KB
film_starships.csv 21KB
film_characters.csv 41KB
film_vehicles.csv 18KB
films.csv 19KB
(3-2) HTML+D3简单构建布局
starwar_alldata.json 89KB
main_kg.html 4KB
5.D3+CSS鼠标响应事件2.png 170KB
4.D3+CSS绘制关系图谱.png 229KB
(4) D3+CSS绘制关系图谱
starwar_alldata.json 89KB
main_kg2.html 8KB
(1) 爬虫 Spider_KG
film_planets.csv 10KB
film_species.csv 20KB
film_starships.csv 21KB
get_details.py 2KB
film_characters.csv 41KB
film_vehicles.csv 18KB
get_films.py 805B
films.csv 19KB
3.HTML+D3简单构建布局.png 108KB
5.D3+CSS鼠标响应事件1.png 110KB
共 44 条
- 1
资源评论
Eastmount
- 粉丝: 25w+
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_20240425_190941.jpg
- 基于stm32的pid控制算法附带串口控制台
- 实验项目一:线性表(模板 ).docx
- 基于LM317A设计交流220V输入可调5V-12V直流输出稳压电源电路multisim10仿真源文件.zip
- Screenshot_2024-04-25-17-04-18-55_2332cb9b27b851b548ba47a91682926c.jpg
- -基于AVR单片机的LNG加液机控制器设计.pdf
- ThePowerOfNow-EckhartTolle.mobi
- BLOCK_TYPE_HEARTBEAT_D70A3465D4EE4E9_046141_dump_1st.dmp
- 项目方法测试调用接口工具
- studyupdate
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功