【问题标题】:Plotting Igraph object based on centrality measure基于中心性度量绘制 Igraph 对象
【发布时间】:2017-01-07 00:19:48
【问题描述】:

我有一个使用下面的代码和中心度度量计算的图表,我如何使用计算的中心度度量来玩这个图表。该图像描述了我的图表的外观,我希望具有最大中心度的节点的大小应该比其他节点更大

r_stats_text_corpus <- Corpus(VectorSource(data1))
r_stats_text_corpus <- tm_map(r_stats_text_corpus, content_transformer(tolower))
r_stats_text_corpus <- tm_map(r_stats_text_corpus, stripWhitespace)
r_stats_text_corpus <- tm_map(r_stats_text_corpus, removePunctuation)
tdm <- TermDocumentMatrix(r_stats_text_corpus,control = list(wordLenghts = c(1,Inf)))
tdm2 <- removeSparseTerms(tdm, sparse = 0.994)
m2 <- as.matrix(tdm2)
m2[m2>=1] <- 1
m2 <- m2 %*% t(m2)  ##Adjaceny Matrix
g <- graph.adjacency(m2, weighted=T, mode = "undirected")
g <- simplify(g)
plot(g)

# Centrality Measures computed 
betweenessCentrality <- betweenness(g)
ec <- eigen_centrality(g)
ec$vector
degreedistribution <- degree.distribution(g)

这是正在使用的文本数据的 sn-p

data1 <- c("RT @mashable: The first Miss America was a 16-year-old high schooler: on.mash.to/24M91OG #IWD2016 pic.twitter.com/eFgPOYi3WI",
"RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H",
"RT @CathyBessant: #Womenintech enjoy their careers, yet gender parity persists. We must change the status quo. #IWD2016 pic.twitter.com/RJA473AG6k",
"RT @ArianaGrande: happy international women's day! ..... I mean week....... I mean month...... I mean year....... I mean life.....  ??",
"RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H",
"RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H",
"RT @NobelPrize: Women who changed the world: facebook.com/nobelprize/vid… #InternationalWomensDay #IWD2016 pic.twitter.com/PalpfyPmux",
"Happy International Women's Day. Must every woman know her strength, beauty, and light. We are warriors. ?????????????? pic.twitter.com/JR1iuwAlkD",
"RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H")

【问题讨论】:

  • "错误:使用 sn-p 时,"data1 中出现意外符号。
  • 亲爱的 Luke 已经更新了数据 sn-p 你现在可以检查一下吗
  • 谢谢。也许plot(g, vertex.size=log(betweenessCentrality+1L)+6L)
  • 不,它不起作用可能是有太多重叠的元素
  • 我认为问题是关于根据中心性调整节点大小?这就是plot(g, vertex.size=log(betweenessCentrality+1L)) 的意义所在。

标签: r igraph


【解决方案1】:

你可以的

data1 <- c("RT @mashable: The first Miss America was a 16-year-old high schooler: on.mash.to/24M91OG #IWD2016 pic.twitter.com/eFgPOYi3WI", "RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H", "RT @CathyBessant: #Womenintech enjoy their careers, yet gender parity persists. We must change the status quo. #IWD2016 pic.twitter.com/RJA473AG6k", "RT @ArianaGrande: happy international women's day! ..... I mean week....... I mean month...... I mean year....... I mean life..... ??", "RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H", "RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H", "RT @NobelPrize: Women who changed the world: facebook.com/nobelprize/vid… #InternationalWomensDay #IWD2016 pic.twitter.com/PalpfyPmux", "Happy International Women's Day. Must every woman know her strength, beauty, and light. We are warriors. ?????????????? pic.twitter.com/JR1iuwAlkD", "RT @Harry_Styles: Happy International Women's Day. I hope it was a wonderful one. H")
library(tm)
library(igraph)
set.seed(1)

r_stats_text_corpus <- Corpus(VectorSource(data1))
r_stats_text_corpus <- tm_map(r_stats_text_corpus, content_transformer(tolower))
r_stats_text_corpus <- tm_map(r_stats_text_corpus, stripWhitespace)
r_stats_text_corpus <- tm_map(r_stats_text_corpus, removePunctuation)
tdm <- TermDocumentMatrix(r_stats_text_corpus,control = list(wordLenghts = c(1,Inf)))
tdm2 <- removeSparseTerms(tdm, sparse = 0.994)
m2 <- as.matrix(tdm2)
m2[m2>=1] <- 1
m2 <- m2 %*% t(m2)  
g <- graph.adjacency(m2, weighted=T, mode = "undirected")
g <- simplify(g)
bc <- betweenness(g)
ec <- eigen_centrality(g)

coords <- layout.auto(g)
par(mfrow = c(1,2))
plot(
  g, 
  layout = coords, 
  vertex.size = log(bc+1L)+2L, 
  vertex.label.cex = plotrix::rescale(bc, c(.7, 2))
)
plot(
  g, 
  layout = coords, 
  vertex.size = ec$vector*10L, 
  vertex.label.cex = plotrix::rescale(ec$vector, c(.7, 2))
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2023-03-27
    • 2021-05-06
    • 2020-12-29
    • 2021-09-20
    • 2018-02-11
    相关资源
    最近更新 更多