2017-05-21 38 views
1

我对R很陌生,遇到以下问题:创建图表(网络分析R)?

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

我有两个数据文件

  • 包含政治家是否被链接的矩阵文件 (politicixpolitici.csv)
  • 包含所有与各 fistname,名polticians的文件,政党,twitterhandle和议会
    (data.csv)

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

我试着这样做如下:

首先,我试图把文件如下组合:

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

=>我已经策划了这网络,但它出来非常马虎,名字在那里,这使得它很难看到+节点显然没有根据派对着色。

然后,我一直在使用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

谢谢,这将帮助我与我的论文。

+0

“politicixpolitici.csv”缺失。 – lukeA

+1

刚刚上传它,现在必须在那里:) –

回答

1

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

你可以做这样的

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和实验与其他布局和可视化交互。

+0

非常感谢,这是一个很大的帮助! :) –