实验七 图分析(Gephi与Python的使用) | |||
小组成员: | |||
一、实验目的 1. 熟悉Python图可视化; 2. 熟悉Gephi的使用; 3. 将Gephi 与Python结合实现可视化。 | |||
二、实验要求 1. 学生提前熟悉资料; 2. 由小组成员集体完成实验,成员分块写实验报告,代码后写注释。 | |||
三、实验内容及步骤 1. 悲惨世界人物关系图(Python实现) 代码 import networkx as nx #用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能 import pylab from pylab import rcParams #pylab 模块是一款由python提供的可以绘制二维,三维数据的工具模块 #指定此图片的大小,和像素 rcParams['figure.figsize']=12,12 ad_gml('C:/Users/Administrator/Desktop/悲惨世界/l') #读取gml文件,记为G py() #G的内容复制给G8 dn=nx.degree(G8) #得到G8内节点的度 #选出G8内所有节点的度小于8的节点,并删除这些节点 for n in des()): if dn[n]<=8: G8.remove_node(n) pos=nx.spring_layout(G8) #布局指定节点排列形式 nx.draw(G8,node_size=10,edge_color='b',alpha=0.45,font_size=9,pos=pos) #画图,节点大小10,边的颜为蓝,透明度0.45,节点标签字体大小9 labels=nx.draw_networkx_labels(G8,pos=pos) #绘制网络G8的边图 pylab.show() 结果展示 2.科幻作者关系图(Python与Gephi与实现) 代码 import csv nodemap={} #创建一个空的列表 #此函数功能是:、添加节点,并计数 def addNode(name): if name in nodemap: node=nodemap[name] node["count"]+=1 #在nodemap中,假如有此节点,此节点计数+1 else: node={"nodeid":name,"count":1} nodemap[name]=node #如果没有该节点,则记录该节点名称,数量记为1,添加到nodemap return with open("C:/Users/Administrator/Desktop/科幻作者/","r") as inputfile: #打开txt文件,把它作为inputfile文件,r为只读模式 ader(inputfile,delimiter="\t") #从csv文件中读取数据,记录为datareader,分隔符:横向制表符 next(datareader,None) #跳过第一行数据 #过每一行数据,添加起点,和目标点 for row in datareader: addNode(row[0]) addNode(row[1]) with open("","w",newline="") as nodefile: #打开文件记为nodefile文件,以w的方式,newline=""为不写入空行 formatter=csv.writer(nodefile,delimiter="\t") #从csv文件中写入数据,记录为formatter,分隔符:横向制表符 formatter.writerow(["Id","Count"]) #第一行写为 ID Count #把nodemap内所有节点,名称和数量写入formatter内 for name in nodemap: node=nodemap[name] formatter.writerow([node["nodeid"],node["count"],]) 结果展示 3.红楼梦人物词云图 代码 import jieba.analyse from os import path from scipy.misc import imread import matplotlib as mpl import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator Params['font.sans-serif'] = ['FangSong'] #识别中文字体,默认设为仿宋 python怎么读取文件中的数据content = open("C:/Users/Administrator/Desktop/词云图/","rb").read() #打开红楼梦的txt文件,以content记录 tags = act_tags(content, topK=100, withWeight=False) #提取content中的关键词,返回K个权重最大的关键词,不返回权重 text =" ".join(tags) #text变量中存入tags的内容 trump_coloring = imread(path.join("ciyun.jpg")) #生成词云 wc = WordCloud(font_path='',background_color="white", max_words=300,mask=trump_coloring,max_font_size=40, random_state=42) #设置词云样式,背景为白,最大字数为300,字体最大为40 #其中font_path部分为设定中文字体(识别中英文),random_state为42种配方案 wc.generate(text) #以text生成单词云 image_colors = ImageColorGenerator(trump_coloring) #改变字体颜,从图像中 plt.imshow(wc) #显示词云图 plt.axis("off") #不显示x轴、y轴下标 plt.show() 结果展示 | |||
四、思考 1、关于图的逻辑(存储)表示不是能很好的呈现顶点之间的关系,而通过python读取gml文件,对其文件的内容,进行图的描绘,可以有效的观察到各个顶点之间的关系。 2、python中有许多方法可以对许多东西进行统计,而读取文件,把文件中的数据进行清洗、处理,然后再对其数据进行有规律的保存,也可以对保存的文件进行不同格式之间的转换。拿到数据、提取数据,这是数据可视化中数据的重要的环节。 | |||
五、实验总结 1. 收获 学习了networkx库的部分函数,对于用图的方式来表示关系,有了进一步的认识。学习了数据读取,并且处理数据的方式,和写入数据格式等等。 2. 存在的问题 在安装库的时候,出现了很多问题,比如用pip直接安装不了,安装的库,在使用上出现错误等等,怎么去解决这些问题用了很长时间,但更进一步的熟悉了安装的几个方法。 | |||
成 绩 评 定 | 内容 | 得分 | 评语 |
1悲惨世界人物关系图30 | |||
2科幻作者关系图30 | |||
3红楼梦词云图20 | |||
4思考10 | |||
5总结10 | |||
得分 | |||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论