实验  图分析(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小时内删除。