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

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

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

第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]


第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")


第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")



(0)

相关推荐