R语言推特twitter网络转发可视化分析

2021-01-28 14:13:27 浏览数 (2)

原文链接:http://tecdat.cn/?p=5124

包含关键词“生物信息学”的推文示例

第1步:加载所需的软件包

代码语言:javascript复制

# 加载所需的软件包





library(igraph)

第2步:收集关于“生物信息学”的推文

代码语言:javascript复制

# 包含“生物信息学”的英语推文

dm_tweets = searchTwitter("bioinformatics", n=500,)


# 得到文本



dm_txt = sapply(dm_tweets, function(x) x$getText())

第3步:识别转发

代码语言:javascript复制

# 查找转发的正则表达式



grep("(RT|via)((?:\b\W*@\w ) )", dm_tweets,




# 哪些推文是转发推文



rt_patterns = grep("(RT|via)((?:\b\W*@\w ) )",


dm_txt, ignore.case=TRUE)


# 显示转发(这些是我们要关注的转发)



dm_txt[rt_patterns]


第4步:收集谁转发和谁发布

我们将使用这些结果来形成边列表以创建图形

代码语言:javascript复制

# 创建列表以存储用户名


who_retweet = as.list(1:length(rt_patterns))




# for循环


for (i in 1:length(rt_patterns))


{


# 通过转发实体获取消息


twit = dm_tweets[[rt_patterns[i]]]


# 获取转推源


poster = str_extract_all(twit$getText(),


"(RT|via)((?:\b\W*@\w ) )")


#删除':'



poster = gsub(":", "", unlist(poster))


# 转推的用户名


who_post[[i]] = gsub("(RT @|via @)", "", poster, ignore.case=TRUE)


# 转推用户名


who_retweet[[i]] = rep(twit$getScreenName(), length(poster))






# 转换列表为向量格式


who_post = unlist(who_post)




第5步: 从编辑清单创建图形

代码语言:javascript复制

# 两列边矩阵



retweeter_poster = cbind(who_retweet, who_post)


# 产生图



rt_graph = graph.edgelist(retweeter_poster)


# 获取点名称



ver_labs = get.vertex.attribute(rt_graph, "name", index=V(rt_graph))


第6步: 让我们绘制图

代码语言:javascript复制

# 选择绘图布局



glay = layout.fruchterman.reingold(rt_graph)


# 绘图



par(bg="gray15", mar=c(1,1,1,1))


plot(rt_graph, layout=glay,




vertex.label.color=hsv(h=0, s=0, v=.95, alpha=0.5),




edge.width=3,


edge.color=hsv(h=.95, s=1, v=.7, alpha=0.5))


# 添加标题



title("nTweets with 'bioinformatics': Who retweets whom",


cex.main=1, col.main="gray95")


第7步:生物信息学表示

代码语言:javascript复制

# 绘制另外一个图



par(bg="gray15", mar=c(1,1,1,1))


plot(rt_graph, layout=glay,




edge.color=hsv(h=.35, s=1, v=.7, alpha=0.4))


# 添加标题



title("Tweets with 'bioinformatics': Who retweets whom",


cex.main=1, col.main="gray95", family="mono")



点击标题查阅往期内容

0 人点赞