Python怎么利用networkx画图绘制Les Misérables人物关系
发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,这篇文章主要介绍"Python怎么利用networkx画图绘制Les Misérables人物关系"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎
千家信息网最后更新 2024年09月25日Python怎么利用networkx画图绘制Les Misérables人物关系
这篇文章主要介绍"Python怎么利用networkx画图绘制Les Misérables人物关系"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么利用networkx画图绘制Les Misérables人物关系"文章能帮助大家解决问题。
数据集介绍
《悲惨世界》中的人物关系图,图中共77个节点、254条边。
数据集截图:
打开README文件:
Les Misérables network, part of the Koblenz Network Collection===========================================================================This directory contains the TSV and related files of the moreno_lesmis network: This undirected network contains co-occurances of characters in Victor Hugo's novel 'Les Misérables'. A node represents a character and an edge between two nodes shows that these two characters appeared in the same chapter of the the book. The weight of each link indicates how often such a co-appearance occured.More information about the network is provided here: http://konect.cc/networks/moreno_lesmisFiles: meta.moreno_lesmis -- Metadata about the network out.moreno_lesmis -- The adjacency matrix of the network in whitespace-separated values format, with one edge per line The meaning of the columns in out.moreno_lesmis are: First column: ID of from node Second column: ID of to node Third column (if present): weight or multiplicity of edge Fourth column (if present): timestamp of edges Unix time Third column: edge weightUse the following References for citation:@MISC{konect:2017:moreno_lesmis, title = {Les Misérables network dataset -- {KONECT}}, month = oct, year = {2017}, url = {http://konect.cc/networks/moreno_lesmis}}@book{konect:knuth2993, title = {The {Stanford} {GraphBase}: A Platform for Combinatorial Computing}, author = {Knuth, Donald Ervin}, volume = {37}, year = {1993}, publisher = {Addison-Wesley Reading},}@book{konect:knuth2993, title = {The {Stanford} {GraphBase}: A Platform for Combinatorial Computing}, author = {Knuth, Donald Ervin}, volume = {37}, year = {1993}, publisher = {Addison-Wesley Reading},}@inproceedings{konect, title = {{KONECT} -- {The} {Koblenz} {Network} {Collection}}, author = {Jérôme Kunegis}, year = {2013}, booktitle = {Proc. Int. Conf. on World Wide Web Companion}, pages = {1343--1350}, url = {http://dl.acm.org/citation.cfm?id=2488173}, url_presentation = {https://www.slideshare.net/kunegis/presentationwow}, url_web = {http://konect.cc/}, url_citations = {https://scholar.google.com/scholar?cites=7174338004474749050},}@inproceedings{konect, title = {{KONECT} -- {The} {Koblenz} {Network} {Collection}}, author = {Jérôme Kunegis}, year = {2013}, booktitle = {Proc. Int. Conf. on World Wide Web Companion}, pages = {1343--1350}, url = {http://dl.acm.org/citation.cfm?id=2488173}, url_presentation = {https://www.slideshare.net/kunegis/presentationwow}, url_web = {http://konect.cc/}, url_citations = {https://scholar.google.com/scholar?cites=7174338004474749050},}
从中可以得知:该图是一个无向图,节点表示《悲惨世界》中的人物,两个节点之间的边表示这两个人物出现在书的同一章,边的权重表示两个人物(节点)出现在同一章中的频率。
真正的数据在out.moreno_lesmis_lesmis中,打开并另存为csv文件:
数据处理
networkx中对无向图的初始化代码为:
g = nx.Graph()g.add_nodes_from([i for i in range(1, 78)])g.add_edges_from([(1, 2, {'weight': 1})])
节点的初始化很容易解决,我们主要解决边的初始化:先将dataframe转为列表,然后将其中每个元素转为元组。
df = pd.read_csv('out.csv')res = df.values.tolist()for i in range(len(res)): res[i][2] = dict({'weight': res[i][2]})res = [tuple(x) for x in res]print(res)
res输出如下(部分):
[(1, 2, {'weight': 1}), (2, 3, {'weight': 8}), (2, 4, {'weight': 10}), (2, 5, {'weight': 1}), (2, 6, {'weight': 1}), (2, 7, {'weight': 1}), (2, 8, {'weight': 1})...]
因此图的初始化代码为:
g = nx.Graph()g.add_nodes_from([i for i in range(1, 78)])g.add_edges_from(res)
画图
nx.draw(g)plt.show()
networkx自带的数据集
忙活了半天发现networkx有自带的数据集,其中就有悲惨世界的人物关系图:
g = nx.les_miserables_graph()nx.draw(g, with_labels=True)plt.show()
完整代码
# -*- coding: utf-8 -*-import networkx as nximport matplotlib.pyplot as pltimport pandas as pd# 77 254df = pd.read_csv('out.csv')res = df.values.tolist()for i in range(len(res)): res[i][2] = dict({'weight': res[i][2]})res = [tuple(x) for x in res]print(res)# 初始化图g = nx.Graph()g.add_nodes_from([i for i in range(1, 78)])g.add_edges_from(res)g = nx.les_miserables_graph()nx.draw(g, with_labels=True)plt.show()
关于"Python怎么利用networkx画图绘制Les Misérables人物关系"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
人物
数据
节点
悲惨
世界
两个
代码
悲惨世界
知识
文件
行业
无向
不同
实用
之间
从中
元素
内容
实用性
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
源之洲网络技术
北京公安局网络安全局
数据库备忘录
昆明蔬菜软件开发
软件开发商都是做什么的
决策支持系统 数据库
弘历软件开发
冒险岛079数据库
网络安全 ft1500
手机软件开发记事本实训报告
软件开发人已经饱和了
虚拟云服务器怎么设置网页
共同打造好网络安全大生态
原生sql连接数据库
按地址位获取数据库
学室内装修和软件开发
网络安全案例演讲结尾
云校家显示网络安全升级
亚马逊服务器如何重装系统
数据库结构设计及应用
信息技术网络安全教育ppt
软件开发创业公司业务
网络安全的感想600字
mysql 找不到数据库
智慧城市 网络安全
浙江net软件开发公司
抚顺翔灸网络技术有限公司
行业加强网络安全管理
微软海底数据库金属材料
数据库结构设计及应用