热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【python】在学习用于图和网络分析的python时遇到的问题和解决方法

以下是在学习《PythonForGraphAndNetworkAnalys》(《用于图和网络分析的python》)一书,运行代码时遇到的一些问题和总结1.Python安装igrap

以下是在学习《Python For Graph And Network Analys》(《用于图和网络分析的python》)一书,运行代码时遇到的一些问题和总结

1.Python安装igraph包加载出错问题

报错:
Python中加载igraph包(from igraph import *)出现igraph包重复,请升级jgraph的错误信息。

报错信息如下:
“DeprecationWarning: To avoid name collision with the igraph project, this visualization library has been renamed to ‘jgraph’. Please upgrade when convenient.”

报错原因:

Python安装的igraph包有两个:igraph和python-igraph,导致加载igraph包时候系统无法判断加载哪一个。实际上,我们需要的包只有python-igraph。

解决办法:

第一步:卸载包 igraph

pip uninstall igraph

第二步:重新安装包 python-igraph

pip install python_igraph

完成以上操作,验证Python中能否成功加载 igraph 包

from igraph import *

2.下载python包的方法

pip

pip是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

安装包

pip install SomePackag # 最新版本
pip install SomePackage==1.0.4 # 指定版本
pip install 'SomePackage>=1.0.4' # 最小版本

例如:安装 Django包,使用代码:

pip install Django==1.7

pip 清华大学开源软件镜像站

若由于一些局域网的原因,使用 pip 出现 “connection timeout”,连接超时可以使用清华大学开源软件镜像站下载:

安装包:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

例如:安装 Django包,使用代码:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django

例如:安装pyspider包,使用代码

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider

3.name ‘nx’ is not defined

报错:
name ‘nx’ is not defined

需先运行代码

import networkx as nx

4.name ‘plt’ is not defined

报错:
name ‘plt’ is not defined

需先运行代码

import matplotlib.pyplot as plt

5.绘制具有20个节点的Watts-Strogatz图

代码:

g =nx.random_graphs.watts_strogatz_graph (0.5,2,20)

报错:
NetworkXError: k>=n, choose smaller k or larger n

修改后的代码:

g =nx.random_graphs.watts_strogatz_graph (20,2,0.5)

6.用G.degree.values()获取所有节点的度数

报错:
‘DegreeView’ object has no attribute ‘values’

报错原因:
pyhton NetworkX 1.X迁移到NetworkX 2.0版本问题
迁移指南网址:
https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html

解决代码:

import networkx as nx
import matplotlib.pyplot as plt
G = nx.read_adjlist("107.edges")
pos = nx.spring_layout(G)
de = dict(G.degree)
#print ("nodes:", G.nodes())
#print ("edges:", G.edges())
print ("number of edges:", G.number_of_edges())
#print("de",de.values())
# de2下面赋给节点大小
de2 = [de[v] for v in de.keys()]
#print("de2",de2)
nx.draw_networkx(G, pos, node_size=de2, with_labels = False, node_color='#A52A2A', linewidths=None, width=1.0, edge_color ='#858585')
plt.savefig("ha.png")
plt.show()

原文链接:
https://blog.csdn.net/weixin_40422360/article/details/90711490

7.name ‘itemgetter’ is not defined

报错:
NameError: name ‘itemgetter’ is not defined.

报错原因:
未导入 operator 模块

需先运行代码:

import operator
from operator import itemgetter

8.在matplotlib p中使用多种颜色绘制图像

代码:

colors = ['r ', 'g ', 'g', 'g', 'g ', 'm ', 'g ', 'r', 'c', 'c']
sizes =[800,300,300,300,300,600,300,800,400,400]
labels = { 0: 'O',1:'1',2: '2',3: '3',4: '4',5: '5',6:'6',7:'7',8 : '8', 9: '9'}
nx.draw_networkx(g, node_color=colors,node_shape='D' , with_labels=True,labels=labels, node_size=sizes)
plt.show ( )

报错:
‘c’ argument must either be valid as mpl color(s) or as numbers to be mapped to colors. Here c = [‘r ‘, ‘g ‘, ‘g’, ‘g’, ‘g ‘, ‘m ‘, ‘g ‘, ‘r’, ‘b’, ‘b’].

修改后的代码:
node_color=colors 修改为 color=colors

colors = ['r ', 'g ', 'g', 'g', 'g ', 'm ', 'g ', 'r', 'c', 'c']
sizes =[800,300,300,300,300,600,300,800,400,400]
labels = { 0: 'O',1:'1',2: '2',3: '3',4: '4',5: '5',6:'6',7:'7',8 : '8', 9: '9'}
nx.draw_networkx(g, color=colors,node_shape='D' , with_labels=True,labels=labels, node_size=sizes)
plt.show ( )

9.注意区分networkx中的函数add_node与add_nodes_from

G.add_node(12,13)#TypeError: add_node() takes 2 positional arguments but 3 were given;
G.add_node([12, 13])#TypeError: unhashable type: 'list'
G.add_node((12,13))#成功加入一个编号为(12,13)的节点
G.add_nodes_from([12,13])#成功加入两个编号为12、13的节点
G.add_edge([(1,2),(3,4)])#TypeError: add_edge() missing 1 required positional argument: 'v'
G.add_edges_from([(1,2),(3,4)])#成功加入边

10.研究网络常用的数据集

社交网络

GML文件。《悲惨世界》:小说《悲惨世界》中角色的共同出现加权网络。DE Knuth,《斯坦福GraphBase:组合计算平台》,Addison-Wesley,马萨诸塞州雷丁(1993)。
GEXF文件。Hypertext 2009动态联系网络:Hypertext 2009会议期间的联系网络。资料来源:Sociopatterns.org。
GEXF文件。1880/81年级:1880/1881年德国男校的友谊网络。它基于可能是第一个主要收集的社交网络数据集,该数据集由小学老师Johannes Delitsch组装而成。重新分析并整理了以下文章的数据:Heidler,R.,Gamper,M.,Herz,A.,Eßer,F.(2014):19世纪的关系模式:德国男校的友谊网络从1880年到1881年重新开始。社交网络13:1-1-3。。
GML文件。扎卡里(Zachary)的空手道俱乐部:1970年代美国大学的一个空手道俱乐部的34名成员之间的社交网络。WW Zachary,《小组冲突与分裂的信息流模型》,《人类学杂志》 33,452-473(1977)。
GML文件。网络科学的共同作者:M。Newman在2006年5月编辑的从事网络理论和实验的科学家的共同作者网络。在此可以找到描述该网络最大组成部分的图。MEJ Newman,物理 E 74,036104(2006)。
GEXF文件。CPAN作者:CPAN Explorer是一个可视化项目,旨在分析开发人员与Perl语言的软件包(称为CPAN社区)之间的关系。该快照是由Linkfluence在2009年7月创建的。该文件包含开发人员网络,当他们使用相同的Perl模块时,这些链接在一起。原始数据可以在这里找到。
GEXF文件。CPAN发行版:CPAN Explorer是一个可视化项目,旨在分析开发人员与Perl语言的软件包(称为CPAN社区)之间的关系。该快照由Linkfluence在2009年7月创建。该文件包含Perl模块依赖关系网络。原始数据可以在这里找到。
NET文件。爵士音乐家网络:爵士音乐家网络的边缘列表。P.Gleiser和L.Danon,高级 Complex Syst.6,565(2003)。
TGZ文件。Github开源开发人员:请参阅https://github.com/franckcuny/blog/blob/master/posts/2010-03-25-github-explorer.md/
DL文件。在线社交网络1899节点-Opsahl,T.,Panzarasa,P.,2009。加权网络中的聚类。社交网络31(2),155-163
GEPHI文件。超级英雄的Marvel社交网络,由巴利阿里群岛大学的CescRosselló,Ricardo Alberich和Joe Miro构建。由Infochimps收集,并由Kai Chang进行了转换和增强。
GDF文件。漫画和英雄网络与上面相同的数据,但这包括英雄出现在其中的漫画。
DOT文件。Twitter提及并转发了Twitter网络的某些部分。该文件会不时更新。
GEXF文件。小学中的联络网络,SocioPatterns团队,2011年。

生物网络

GEXF。Diseasome:由已知的疾病基因关联所组成的疾病和疾病基因网络,表明许多疾病的共同遗传起源。与相似疾病相关的基因在其产物之间表现出较高的物理相互作用可能性,并且其转录物具有较高的表达谱相似性,从而支持不同疾病特异性功能模块的存在。原始数据集可在此处找到:The Human Disease Network,Goh KI,Cusick ME,Valle D,Childs B,Vidal M,BarabásiAL(2007),Proc Natl Acad Sci USA 104:8685-8690
GEXF。C. Elegans神经网络:表示C. Elegans神经网络的有向加权网络。数据由D.Watts和S.Strogatz汇编并在此处提供。请引用DJ Watts和SH Strogatz,《自然》(Nature)393,440-442(1998)。原始实验数据取自JG White,E.Southgate,JN Thompson和S.Brenner,Phil。反式 R. Soc。伦敦314,1-340(1986)。
GEXF。酵母:酵母中的蛋白质-蛋白质相互作用网络。原始数据可以在这里找到。

基础设施网络

GML。电网:代表美国西方国家电网拓扑的无方向,无权网络。数据由D.Watts和S.Strogatz汇编并在此处提供。请引用DJ Watts和SH Strogatz,《自然》(Nature)393,440-442(1998)。
GRAPHML。航空公司:来源不明。
NET。US Air97:北美运输地图集数据(NORTAD)。原始数据可以在这里找到。

其他网络

GEXF。Java代码:S.Heymann和J.Palmier,2008年,Java程序的源代码结构。
GEXF。动态Java代码:S.Heymann&J.Bilcke,2008年,通过在SVN上提交的演变而实现的Java程序的动态源代码结构。
GML。单词邻接:查尔斯·狄更斯(Charles Dickens)的小说《大卫·科波菲尔》(David Copperfield)中常见形容词和名词的邻接网络。请引述MEJ Newman,Phys。E 74,036104(2006)。
NET。Wordnet英语词典:来源不明。
DOT。抽象网格:331个节点。

原文链接:https://github.com/gephi/gephi/wiki/Datasets

11.Module ‘networkx’ has no attribute ‘blockmodel’

代码:

partition = [[0,1],[2,3],[4,5], [6, 7], [8, 9]]
M = nx.blockmodel(G,partition)

报错:
Module ‘networkx’ has no attribute ‘blockmodel’

报错原因:
最新版本的networkx中,blockmodel功能已替换为quotient_graph

修改后的代码:

partition = [[0,1],[2,3],[4,5], [6, 7], [8, 9]]
M = nx.quotient_graph(G,partition)

12.

代码:

print(nx.all_pairs_shortest_path(g))

修改后的代码:

print(list(nx.all_pairs_shortest_path(g)))

13.‘generator’ object is not subscriptable

代码:

print((nx.all_pairs_shortest_path(g))[1])

报错:
‘generator’ object is not subscriptable

报错原因:
新版本的openpyxl使用rows或者columns返回一个生成器所以可以使用List来解决报错问题

修改后的代码:

print(list(nx.all_pairs_shortest_path(g))[1])

14.name ‘xrange’ is not defined

报错:
NameError:name ‘xrange’ is not defined

报错原因:
在Python 3中,range()与xrange()合并为range( )

解决办法:
将xrange( )函数全部换为range( )。


推荐阅读
  • 本文深入探讨了 Android DrawingView 的优化技巧与实现方法,重点介绍了如何实现平滑绘制效果。通过支持常见的绘图工具和形状,以及图层变换功能,提升了用户体验。文章详细解析了绘制过程中的性能优化策略,包括减少重绘次数、使用硬件加速和优化内存管理等技术,为开发者提供了实用的参考。 ... [详细]
  • 在 Windows 10 系统下配置 Python 3 和 OpenCV 3 的环境时,建议使用 Anaconda 分发版以简化安装过程。Anaconda 可以从其官方网站(https://www.anaconda.com/download)下载。此外,本文还推荐了几本关于 Python 和 OpenCV 的专业书籍,帮助读者深入理解和应用相关技术。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 深入解析 Unity URP/SRP 渲染管线:匠心打造的全面指南
    本文深入探讨了Unity中的URP、SRP和HDRP渲染管线,详细解析了它们之间的关系及各自的特点。首先介绍了SRP的基本概念及其在Unity渲染架构中的作用,随后重点阐述了URP和HDRP的设计理念与应用场景。文章还分析了SRP诞生的背景,解释了为何Unity需要引入这一灵活的渲染框架,以满足不同项目的需求。通过对比URP和HDRP,读者可以更好地理解如何选择合适的渲染管线,以优化项目的性能和视觉效果。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 使用 MyEclipse 和 TestNG 测试框架在 Java 中高效进行单元测试
    通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK 1.8.0_121和MyEclipse 10.0离线环境下配置和使用TestNG的具体步骤,帮助开发者提高测试效率和代码质量。 ... [详细]
  • 在Unity中进行3D建模的全面指南,详细介绍了市场上三种主要的3D建模工具:Blender 3D、Maya和3ds Max。每种工具的特点、优势及其在Unity开发中的应用将被深入探讨,帮助开发者选择最适合自己的建模软件。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
author-avatar
小花诸葛_630
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有