创建图表(网络分析R)?

时间:2017-05-21 11:10:15

标签: r igraph network-analysis statnet

我对R很陌生并且遇到以下问题:

我正在Twitter上研究比利时的政治家,并希望看看Twitter上的政党是否有任何网络形式。

我有两个数据文件

  • 包含政客是否已关联的矩阵文件 (politicixpolitici.csv)
  • 包含所有相关政治家的文件 名字,名字,政党,twitterhandle和议会 (data.csv)

我想创建一个显示网络的图表,但是由他们的政党派对的节点着色(这个变量在data.csv文件中称为'fractie')。

我尝试过这样做:

首先,我尝试按如下方式组合文件:

rownames(politicicsv) <- politicicsv[,'TwitterHandle']
test <- cbind(politicixpolitici, 
              politicicsv[, "Fractie"][match(rownames(politicixpolitici), 
                                             rownames(politicicsv))])

=&GT;我已经绘制了这个网络,但它显得非常草率,名字在那里,这使得很难看到+节点显然没有根据派对着色。

然后,我尝试使用statnet,但是当我想创建图形时,我遇到了创建顶点属性的问题:

fractie <- get.vertex.attribute(politicicsv, "Fractie") 

Error in get.vertex.attribute(politicicsv, "Fractie") : 
  get.vertex.attribute requires an argument of class network.

有人可以帮助我绘制这个网络,根据他们所属的政党(“Fractie”)对节点进行着色吗?

可以找到文件here

谢谢,这对我的论文有帮助。

1 个答案:

答案 0 :(得分:1)

  

有人可以帮我绘制这个网络,节点是彩色的   根据他们所属的政党(&#34; Fractie&#34;)?

你可以这样做

df <- read.csv("data.csv") 
m <- as.matrix(read.csv2("politicixpolitici.csv", row.names = 1))
library(igraph)
g <- simplify(graph_from_adjacency_matrix(m))
# Color palette:
(pal <- setNames(
  colorRampPalette(categorical_pal(8))(nlevels(df$Fractie)), 
  levels(df$Fractie)) ) 
#         CD&V    Ecolo-Groen          Groen           N-VA Onafhankelijke 
#    "#E69F00"      "#81ADA3"      "#33ABB9"      "#18A56E"      "#C0D64B" 
#     Open vld       Open Vld           sp.a             VB  Vlaams Belang 
#    "#77AB7A"      "#2A6D8E"      "#BF5F11"      "#CF6E64"      "#BC82A2" 
# Vuye&Wouters 
#    "#999999" 
V(g)$color <- pal[df$Fractie[match(V(g)$name, df$TwitterHandle)]]
set.seed(1); coords <- layout_with_fr(g)
plot(g, 
  layout=coords, vertex.label.cex=.2, vertex.size=2, 
  edge.arrow.size=0, edge.lty="blank", asp = 0)

或尝试交互式情节:

library(visNetwork)
visIgraph(g) %>% 
  visIgraphLayout(layout="layout.norm", layoutMatrix = coords, type = "full")

总而言之,我建议将图表导出到gephi,并以交互方式在其中进行其他布局和可视化实验。

相关问题