使用Force Atlas 2布局可视化网络

mediaviz的Python项目详细描述


MediaViz

MediaViz是为我的项目Automating Network Visualization and community detection of Media Sources Network from Mediacloud data创建的网络可视化库,该项目是在导师Hal Roberts的指导下参与Google Summer Of Code 2018的,由哈佛大学的Berkman Klein Center of Internet And Society完成。

Mediacloud是一个开源的、面向研究人员的开放数据平台,为定量分析提供数据和统计数据。MediaViz最初是为了自动化媒体源网络的网络可视化而开发的,用于不同主题,如网络中立性、埃博拉病毒等。

然而,除了MediaCloud的使用之外,MediaViz还是一个通用的网络可视化库,它还为基于力的布局提供功能,例如force atlas 2、防止节点重叠的自动缩放、网络过滤的类GEPHI功能、着色、节点大小调整、防止标签重叠和社区可视化。

MediaViz默认使用Force Atlas 2布局,并为具有幂律链接结构的100-1000个节点的图形自动缩放布局。MediaViz具有合理的默认值,可用于一般图形可视化以及具有许多自定义参数的可发布图形,包括在NetworkX或更高版本中将绘图功能与任何其他网络布局功能一起使用。

使用部分提供了示例和演示可视化。

文档

完整的文档可在https://mediaviz.readthedocs.io/en/latest/

安装

从pip安装软件包:

pipinstallmediaviz

要从源代码构建,请下载存储库并转到mediavix顶级目录。然后使用

pythonsetup.pyinstall

pipinstall.

依赖关系

博客文章

用法

使用带有默认参数的Force Atlas 2布局绘制网络

importnetworkxasnxfrommediaviz.drawimportdraw_forceatlas2_networkpath='graphname.gexf'G=nx.erdos_renyi_graph(200,0.7)draw_forceatlas2_network(G,node_color='purple',node_size=10,edge_color='gray',filename="random.png")

使用Force Atlas 2绘制网络布局并进行定制

这里我们分析.gexf视觉属性中的颜色代码。

importnetworkxasnxfrommediaviz.drawimportdraw_forceatlas2_networkfrommediaviz.viz_parserimportparse_colors,parse_size# 1000 node graph from mediacloud on network neutrality topicpath="network_neutrality.gexf"G=nx.read_gexf(path)node_colors=list(parse_colors(path,hex=True).values())draw_forceatlas2_network(G,num_labels=30,# num_labels indicates to only label top 30 largest nodes by node_sizefa2l_scaling_ratio=40,fa2l_iterations=100,# parameters for the force atlas 2 layoutnode_color=node_colors,with_labels=True,label_field="label",filter_by="inlink_count",top=200,# filter to get top 200 nodes sorted by inlink_countsize_field="inlink_count",min_size=0.1,max_size=200,# resize by inlink_countadjust_labels=True,# adjusts labels to prevent label overlapnode_opacity=0.8,edge_opacity=0.01,font_size=6,# size of label font_size filename="network_neutrality.png",title="network_neutrality",edge_color_by_source=True)

绘制带有社区检测和社区分区着色的网络

importcommunityimportnetworkxasnxfrommediaviz.community_utilsimportget_community_graph,get_community_colormapfrommediaviz.drawimportdraw_forceatlas2_networkG=nx.florentine_families_graph()# get the community partitions and set partition as an attribute for the nodes G,partitions=get_community_graph(G)# colormaps are automatically assigned for each partition as randomly genererated hex colorscolormap=get_community_colormap(partitions)# use the draw function as usual with forceatlas2 layout as defaultdraw_forceatlas2_network(G,color_by="partition",colormap=colormap,node_size=10,with_labels=True,edge_color_by_source=True,node_opacity=1,edge_opacity=1,font_size=10,filename="community.png",figsize=(10,10));

仅使用绘图功能与其他布局算法进行自定义可视化

importnetworkxasnxfrommediaviz.drawimportdraw_forceatlas2_networkG=nx.karate_club_graph()pos=nx.spring_layout(G)draw_forceatlas2_network(G,pos=pos,node_size=10,color_by="club",colormap={"Officer":"r","Mr. Hi":"b"},node_opacity=1,edge_opacity=1,filename="karate_club.png",edge_color="lightgray")

贡献和进一步改进

如果你想参与,请发送一个请求,列出你所做的更改,并清楚地说明理由。更好地将绘图功能与matplotlib集成,并尝试不同的启发式方法来实现自动缩放将是优先考虑的问题。

许可证

此项目是在麻省理工学院的许可下授权的-请参阅license.txt文件了解详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
显示图像的RGB编号的java   java JavaFX画布2D游戏:背景变换vs.绘画   在到达maxElementsInMemory之前创建的java DiskMarker   a4j:ajax可用事件的java详尽列表?   java从批处理文件运行jar文件,如果出现错误,则显示meessage   音频Java在背景音乐之上播放声音   用于在FTP中上载文件的java更改目录   尽管设置了必要的属性,java列表项仍不会保持选中状态   java Stanford Core NLP解析与CSV   java使用缓冲区合并热态和冷态   java无法初始化类javax。加密。JCE安全   对这个Java循环如此困惑的输入   java Spring RabbitMQ SimpleRabbitListenerContainerFactory用法   java如何使用jGrowl创建JSF消息   安装jRebel插件后,Netbeans项目中的java源文件夹不可见?   如何在Java中解析复杂的json字符串   java Spark KafkaUtils CreateRDD在键上应用过滤器   try块中的java代码被忽略,为什么?