我对R很陌生并且遇到以下问题:
我正在Twitter上研究比利时的政治家,并希望看看Twitter上的政党是否有任何网络形式。
我有两个数据文件
我想创建一个显示网络的图表,但是由他们的政党派对的节点着色(这个变量在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
谢谢,这对我的论文有帮助。
答案 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,并以交互方式在其中进行其他布局和可视化实验。