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

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

由Kaizong Ye,Coin Ge撰写

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

# 加载所需的软件包
 
 
library(igraph)

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

# 包含“生物信息学”的英语推文
dm_tweets = searchTwitter("bioinformatics", n=500,)
 
# 得到文本
 
dm_txt = sapply(dm_tweets, function(x) x$getText())

第3步:识别转发

# 查找转发的正则表达式
 
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]
 


课程

R语言数据分析挖掘必知必会

从数据获取和清理开始,有目的的进行探索性分析与可视化。让数据从生涩的资料,摇身成为有温度的故事。

立即参加

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

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

# 创建列表以存储用户名
 
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步: 从编辑清单创建图形

# 两列边矩阵
 
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步: 让我们绘制图

# 选择绘图布局
 
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")
 


python隶属关系图模型:基于模型的网络中密集重叠社区检测方法

阅读文章


第7步:生物信息学表示

# 绘制另外一个图
 
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")
 


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds