用networkx和python编程可视化分析共现词关系图资讯

这些问题会在接下来的多个notebook中逐一探索,首先,本notebook将演练使用networkx画社会网络分析图。然后在接下来的notebook中演练对图的化简,分别根据边权重化简和利用MST算法化简。

2使用方法

操作顺序是:

3修改历史

2022-08-18:第一版发布

本notebook是GooSeeker大数据分析团队开发的,所分析的源数据是GooSeeker分词和文本分析软件生成的,本notebook中的代码可自由共享使用,包括转发、复制、修改、用于其他项目中。

5准备运行环境

5.1引入需要用到的库

#-*-coding:utf-8-*-

importos

importnumpyasnp

importpandasaspd

importnetworkxasnx

importmatplotlib.pyplotasplt

importpylab

%xmodeVerbose

importwarnings

#软件包之间配套时可能会使用过时的接口,把这类告警忽略掉可以让输出信息简练一些

warnings.filterwarnings("ignore",category=DeprecationWarning)

#把RuntimeWarning忽略掉,不然画图的时候有太多告警了

warnings.filterwarnings("ignore",category=RuntimeWarning)

5.2设置中文字体

因为含有中文,pyplot画图有可能会显示下面的错误信息:

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:238:RuntimeWarning:Glyph32993missingfromcurrentfont.font.set_text(s,0.0,flags=flags)

#plt.rcParams['font.sans-serif']=['SimHei']

#上面一行在macOS上没有效果,所以,使用下面的字体

plt.rcParams['font.sans-serif']=['ArialUnicodeMS']

plt.rcParams['axes.unicode_minus']=False

5.3常量和配置

在我们发布的一系列JupyterNotebook中,凡是处理GooSeeker分词软件导出的结果文件的,都给各种导出文件起了固定的名字。为了方便大家使用,只要把导出文件放在data/raw文件夹,notebook就会找到导出文件,赋值给对应的文件名变量。下面罗列了可能用到的文件名变量:

pd.set_option('display.width',1000)#设置字符显示宽度

pd.set_option('display.max_rows',None)#设置显示最大

#np.set_printoptions(threshold=np.inf)#threshold指定超过多少使用省略号,np.inf代表无限大

#存原始数据的目录

raw_data_dir=os.path.join(os.getcwd(),'../../data/raw')

#存处理后的数据的目录

processed_data_dir=os.path.join(os.getcwd(),'../../data/processed')

filename_temp=pd.Series(['词频','分词效果','选词矩阵','选词匹配','选词结果','共词矩阵'])

file_all_word=''

file_seg_effect=''

file_word_occurrence_matrix=''

file_word_frequency_matrix=''

file_word_document_match=''

file_chosen_word=''

file_co_word_matrix=''

5.4检测data\raw目录下是否有GooSeeker分词结果表

在本notebook只使用共词矩阵表,下面的代码将检查data/raw中有没有这个表,如果没有会报错,后面的程序就没法执行了。

#0:'词频',1:'分词效果',2:'选词矩阵',3:'选词匹配',4:'选词结果',5:'共词矩阵'

print(raw_data_dir+'\r\n')

foritem_filenameinos.listdir(raw_data_dir):

iffilename_temp[5]initem_filename:

file_co_word_matrix=item_filename

continue

iffile_co_word_matrix:

print("共词矩阵表:","data/raw/",file_co_word_matrix)

else:

print("共词矩阵表:不存在")

输出结果像这样:

C:\Users\work\workspace_219\notebook\发布-二舅\用networkx和python编程可视化分析共词关系图\notebook\eda\../../data/raw

共词矩阵表:data/raw/共词矩阵-知乎-二舅.xlsx

6读取共词矩阵表并存入矩阵

6.1用pandasdataframe读入共词矩阵

df_co_word_matrix=pd.read_excel(os.path.join(raw_data_dir,file_co_word_matrix))

df_co_word_matrix.head(2)

6.2提取字段名

将用于给graph的node命名

coword_names=df_co_word_matrix.columns.values[1:]

print("Thereare",len(coword_names),"words")

coword_names

输出结果:

Thereare133words

array(['世界','二舅','现实','时候','故事','人生','事情','苦难','精神','底层','内耗',

'时代','人民','视频','社会','人们','问题','母亲','普通人','国家','农村','作者',

'年轻人','价值','意义','一生','经历','感觉','方式','大学','房子','年代','条件',

'能量','医生','老师','办法','大众','电影','鸡汤','机会','压力','父母','穷人',

'小镇','角度','悲剧','收入','关系','内容','视角','老人','内心','环境','流量',

'情况','情绪','文案','目的','观点','人类','农民','资本','个体','励志','代表',

'平台','文艺创作','分钟','经济','想法','朋友','心理','群众','人物','日子','资源',

'思想','历史','残疾人','文艺','编剧','木匠','过程','生命','身体','状态','艺术',

'政府','物质','人人','医疗','村子','文学','热度','心态','网友','周劼','机制',

'宁宁','外甥','兴趣','主流','公子','父亲','官方','文艺作品','好人','源泉','公寓',

'彭叔'],dtype=object)

6.3生成矩阵数据结构

#使用astype函数对数据类型进行转换,否则,下面画图的时候可能会报错

array_co_word_matrix=df_co_word_matrix.values[:,1:].astype(float)

array_co_word_matrix

array([[101.,74.,24.,...,1.,1.,1.],

[74.,403.,59.,...,5.,1.,1.],

[24.,59.,76.,...,1.,1.,1.],

...,

[1.,5.,1.,...,7.,0.,0.],

[1.,1.,1.,...,0.,1.,0.],

[1.,1.,1.,...,0.,0.,1.]])

统计一下词语数量看看:

word_num=len(array_co_word_matrix)

word_num

输出结果:133

7生成图并进行探索

7.1从NumPy数组生成networkx图

#graph_co_word_df=nx.from_pandas_adjacency(df_co_word_matrix)

graph_co_word_matrix=nx.from_numpy_array(array_co_word_matrix)

print(nx.info(graph_co_word_matrix))

#graph_co_word_matrix.edges(data=True)

Name:

Type:Graph

Numberofnodes:133

Numberofedges:7843

Averagedegree:117.9398

7.2给node加上label

如果不加label,画出来的图上的每个节点只是一个编号,加上label可以看到节点对应的词。

coword_labels=nx.get_node_attributes(graph_co_word_matrix,'labels')

coword_labels

{}

foridx,nodeinenumerate(graph_co_word_matrix.nodes()):

print("idx=",idx,";node=",node)

coword_labels[node]=coword_names[idx]

graph_co_word_matrix=nx.relabel_nodes(graph_co_word_matrix,coword_labels)

sorted(graph_co_word_matrix)

7.3画图

#方案1:用pylab画图

#pos=nx.shell_layout(graph_co_word_matrix)

#nx.draw(graph_co_word_matrix,pos,with_labels=True,node_color='white',edge_color='grey',node_size=1200,alpha=1)

#pylab.title('co-wordmatrix',fontsize=25)

#pylab.show()

#方案2

#pos=nx.circular_layout(maximum_tree)

pos=nx.spring_layout(graph_co_word_matrix)

plt.figure(1,figsize=(30,30))

nx.draw(graph_co_word_matrix,pos,node_size=10,with_labels=True,font_size=22,font_color="red")

#nx.draw(graph_co_word_matrix,pos,with_labels=True)

#nx.draw_networkx_labels(graph_co_word_matrix,pos,labels)

plt.show()

8点度中心性分析

上面画的图糊成了一片,改进方向可以有这些

8.1定义一个公共画图函数

defdiplay_graph_degree(G):

seq_degree=sorted((dforn,dinG.degree()),reverse=True)

dmax=max(seq_degree)

fig=plt.figure("Degreeofthecountgraph",figsize=(8,8))

#Createagridspecforaddingsubplotsofdifferentsizes

axgrid=fig.add_gridspec(5,4)

ax0=fig.add_subplot(axgrid[0:3,:])

Gcc=G.subgraph(sorted(nx.connected_components(G),key=len,reverse=True)[0])

pos=nx.spring_layout(Gcc,seed=10396953)

nx.draw_networkx_nodes(Gcc,pos,ax=ax0,node_size=20)

nx.draw_networkx_edges(Gcc,pos,ax=ax0,alpha=0.4)

ax0.set_title("ConnectedcomponentsofG")

ax0.set_axis_off()

ax1=fig.add_subplot(axgrid[3:,:2])

ax1.plot(seq_degree,"b-",marker="o")

ax1.set_title("DegreeRankPlot")

ax1.set_ylabel("Degree")

ax1.set_xlabel("Rank")

ax2=fig.add_subplot(axgrid[3:,2:])

ax2.bar(*np.unique(seq_degree,return_counts=True))

ax2.set_title("Degreehistogram")

ax2.set_xlabel("Degree")

ax2.set_ylabel("#ofNodes")

fig.tight_layout()

8.2对点度中心性排序

观察哪些词是中心词。可以看到,由于数据集中的每个文档都比较长,共现的机会很高,所以,点度中心性很近似,前面的这些基本上都是全连接。

sorted(graph_co_word_matrix.degree(),key=lambdax:x[1],reverse=True)

8.3综合展示点度中心性

因为图的密度很高,用这个新定义的画图函数依然显示一片黑,但是还有两个图值得注意,实际上这两个图展示了相同内容,只是展示的角度不同,从这两个图可以看到具有某个点度的节点数量。

THE END
1.分段函数图像1Desmos免费使用Desmos精美的在线图形计算器来探索数学奥妙。功能包含绘制函数图形和散点图,视化代数方程式、新增滑块,动画图表等。快来使用我们既精美又免费的在线图形计算器,一同探索数学!其丰富功能包括绘制函数图形、散点图、代数方程式可视化、添加滑块和图表动画等等。https://www.desmos.com/calculator/5nhkhmsjjx
2.函数图像在线函数图像生成函数图像在线绘制生成,常见的函数图像集锦。https://zuotu2.91maths.com/
3.函数画图工具在线使用理想股票技术论坛在线使用的函数画图工具,轻松绘制各类函数图像,包括曲线图、折线图等,操作简便,可视化效果好。 ,理想股票技术论坛https://www.55188.com/tag-thread-8956600-1.html
4.在线数学函数作图器数学函数作图软件函数作图器大全用户可以自由键入表达式,随时调整函数的取值范围、相关数值,甚至颜色、粗细、暂时隐藏,坐标轴与网格是否显示、颜色、粗细、刻度大小等。软件同时附带一些常用小工具.比如计算两点间距离、点到直线距离、两直线交点和夹角等,让教师用户彻底在黑板画图的麻烦!2024-11-15 12:53:11 共9款 http://www.downcc.com/k/hanshuzuotuqi/
5.ggb在线画图工具怎么用ggb画区间内的函数使用GGB在线画图工具来绘制区间内的函数,可以按照以下步骤进行操作:1. 首先进入GGB官方网站,在首页中选择在线画图选项。2. 在画图页面中,可以选择使用矩形、曲线等基本图形来绘制函数的基本框架。如果需要绘制区间内的函数,则需要先确定函数的定义域和值域。3. 定义域是指自变量的取值范围,一般用有序数对或数组表示。https://wap.zol.com.cn/ask/details_25039840_222873_3.html
6.在线数学函数画图工具2D3D3dfbhelp在线数学函数画图工具 2D 3D 手写公式并画图 https://webdemo.myscript.com/views/math/index.html 函数图像与其导数图像 自动求导网站 https://ggb123.cn/3dhttps://huaweicloud.csdn.net/63a56eeeb878a54545946e2d.html
7.在线函数图像在线画函数图emanleehttps://www.desmos.com/calculator?lang=zh-CN https://hs.luomashu.com/ 在线查看函数图像 Desmos https://www.desmos.com/calculator 在线画图工具:ASCIIFlow Infinity httphttps://www.cnblogs.com/emanlee/p/17633330.html
8.函数绘图计算器在线函数绘图三角函数: sin(x), cos(x/2), tan(2x), csc(3x), sec(x/4), cot(x) 反三角函数: arcsin(x), arccos(x), arctan(x), arccsc(x), arcsec(x), arccot(x) 指数(e^x)和logarithm: (自然对数:ln(x) 以10为底对数:log(x) 绝对值::如abs(x) https://www.json.cn/gongju-trigonometry/graph_ploter.html
9.画函数图像的软件函数图像制作函数绘图软件app画函数图像的软件专为数学所提供一个平台,通过它能够帮助大家进行更好的学习函数,并且也不用很费劲的进行制作函数图像,只需要输入方程式就能够帮助大家快速且详细的自动生成函数图像,还能够将它导出来,帮助大家进行更好的学习函数提高学习效率,对于带可变参数的曲线,可以手动调节参数观察函数曲线的变化哦,可以自由添加函数http://www.downyi.com/key/hanshutuxiang/
10.函数图像绘制工具函数图形绘制器(绘图工具)绘制给定函数的图像。多个函数分别用不同颜色绘出。函数之间请用逗号,X值与Y值取值范围分隔。输入完毕后请按“绘制图形”按钮。图形计算器允许使用图形窗格下面的控制按钮移动、缩放和居中图形。您也可以使用鼠标拖动来移https://zh.numberempire.com/graphingcalculator.php
11.matlab分段函数怎么画图电脑软件matlab分段函数怎么画图下次还敢 2024-06-09 18:51 2349浏览 原创 matlab 中绘制分段函数的步骤:定义自变量向量 x。定义断点向量 x_breaks,将自变量区间划分为段。定义函数值向量 y_values,包含每个区间内相应函数值。使用 piecewise 语句传递上述变量,创建分段函数并绘制它。 如何使用 MATLAB 绘制分段函数 分段函数https://m.php.cn/faq/825721.html
12.ZX数学函数作图器下载【自定义函数(Ctrl+Z)】——在此您可以定义您自己的函数。 【使用外部自定义函数文件】——若您使用了外部文件保存自定义函数,别忘了选上它;若不使用,千万不要选它。 4、【图像】 【复制图像到剪贴板(Ctrl+C)】——将当前绘制的图像复制到剪贴板,您可以在其它画图程序中粘贴。 【导出图像(Ctrl+E)】——https://m.crsky.com/mip/soft/213387.html?from=singlemessage
13.在线函数图像生成51CTO博客已为您找到关于在线函数图像生成的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及在线函数图像生成问答内容。更多在线函数图像生成相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/2914cbaf39f6e70.html
14.北京星兴海科技有限公司产品 下载 探索数学之美 数形结合 在公式编辑计算中强化所学概念与定义,更进一步 知其然知其所以然 多种计算方法对照学,曾益己所不能 有图有真相 函数特性学习与分析,尽在掌控 学以致用 自主设计几何场景,读图看分析,提升数学思维 数学之美 多种图形绘制对比学,融会贯通走捷径 http://www.mathfuns.com/
15.在线绘制多项式/函数曲线图形工具在线计算器在线绘制多项式/函数曲线图形工具 这是一款基于echarts插件实现的多项式/函数曲线图形绘制工具,可在直角坐标系中绘制出给定数学函数F(x)所对应的坐标系曲线(或直线)图形。免费提供给需要的朋友参考使用。 这里的函数需要按照JavaScript语法表示的数学函数进行手工编写(具体可参考下方JavaScript Math函数附表),然后配置x的http://tool.36130.com/jisuanqi/fun_draw.html
16.函数图像生成器app在线下载免费版函数图像生成器下载手机版函数图像生成器app在线下载安卓版,输入任意方程,一键生成函数图像,轻松处理对数、绝对值、平方根等问题,快速显示结果,解决计算问题,随时随地轻松制作函数图像,让工作学习更省心。函数图像生成器软件,超多功能免费用,智能生成函数图像,在线演示,解决作图烦恼,操作更轻松。 https://www.qqtn.com/qqkey/hstxscq/
17.如何用函数画出坤坤(如何用函数画坤坤)通过这样的方法,我们可以将一个真实的形象转化为数学图形,这不仅是一种技术上的挑战,也是一种艺术上的创新。最终,当所有函数拼接在一起时,我们就能得到一个栩栩如生的坤坤图像。 这个过程不仅展示了数学的实用性,也体现了艺术的创造性。通过函数画图,我们能够以全新的视角欣赏和表达美。https://www.zaixianjisuan.com/jisuanzixun/ruheyonghanshuhuachukunkun.html
18.MATLAB常用函数大全20210919040510.docx免费在线预览全文 MATLAB常用函数大全 MATLAB常用函数大全 MATLAB常用函数大全 合用标准文案 一、 MATLAB 常用的根本数学函数 abs(x) :纯量的绝对值或向量的长度 angle(z) :复数 z 的相角 (Phase angle) sqrt(x) :开平方 real(z) :复数 z 的实部 imag(z) :复数 z 的虚部 conj(z) :复数 z 的共轭复https://m.book118.com/html/2021/0919/5323342022004011.shtm
19.三维函数绘图仪为变量、绘图仪和三维函数输入变量x的间隔函数在空间中的图形。这是一个函数图示器应用程序。您可以绘制曲面,如Moebius带、圆环、球体等。在我们的曲面库中,您可以找到Moebius带的参数化、环面的参数化和球体的参数化,Helicoid的参数化以及抛物面的参数化 函数三维绘图仪是一款在线应用程序,用于绘制双变量实函数,即 fhttps://www.bchrt.com/tools/3d-functions-plotter/
20.数学知识点补充在线绘制函数图像 数学画图工具 https://www.desmos.com/calculator image.png 手写公式并画图 https://webdemo.myscript.com/views/math/index.html image.png 函数图像与其导数图像 https://www.derivative-calculator.net/ 3D 图像 https://ggb123.cn/3d https://www.jianshu.com/p/9cc78a94b049
21.ProcessOn思维导图流程图在线画思维导图流程图ProcessOn是一款专业在线作图工具和知识分享社区,提供AI生成思维导图流程图。支持思维导图、流程图、组织结构图、网络拓扑图、鱼骨图、UML图等多种图形,同时可实现人与人之间的实时协作和共享,提升团队工作效率。https://www.processon.com/
22.抛物线图像计算器,抛物线在线画图,抛物线图像抛物线图像,抛物线图像怎么画,抛物线图像演示,抛物线图像如图所示,抛物线图像画法,半立方抛物线图像,抛物线函数图像,抛物线的图像与性质,抛物线的图像及性质,抛物线方程及图像https://www.sojson.com/picture/parabola.html
23.python35种绘图函数详细总结pythonPython有许多用于绘图的函数和库,比如Matplotlib,Plotly,Bokeh,Seaborn等,这只是一些常用的绘图函数和库,Python还有其他绘图工具,如Pandas、ggplot等,选择适合你需求的库,可以根据你的数据类型、图形需求和个人偏好来决定,本文给大家总结了python35种绘图函数+ 目录 基础图 下面这8种图像一般只有两组坐标,直观容易理解。https://www.jb51.net/python/295884m5j.htm
24.函数作图工具–GeoGebra函数作图工具 Author:季阳天 输入x,点击"列表描点"按钮,拖动连线滑竿.http://www.geogebra.org/m/BfeahY8B
25.函数图像生成器输入数据自动生成图表的软件函数图像生成器是一款数学图像绘制软件,提供丰富的微积分、函数等计算,输入相关数值就能快速计算出图,图形生成也是非常棒的,结果精准,帮助我们快速的计算出数据,标准型或强大的科学计算型满足不同需要。让数学计算更简单,复杂计算需求者必不可少的计算工具。画函数图http://www.ishaohuang.com/s/hstxscq/