1

私はnetworkD3::forceNetwork、雇用主が従業員を雇う雇用主と大学のチャートを作成するために使用しようとしています。

今、私はこのようなものを持っています:

forceNetwork(Links= Links, Nodes= netDf , 
             Source = 'collegeName', Target = 'organizationName', Value='count',
             NodeID = 'collegeName', Group = 'organizationName')

しかし、出力は期待どおりに見えません。私がしたいのは、次のとおりです。

  1. 大学ごとに 1 つのバブル
    1. 雇用主ごとに 1 つのバブル
    2. 雇用主に接続された大学。雇用主の数 ( count) が接続線の幅にマッピングされます。

大学が互いに接続されることは決してなく、同じことが雇用主にも当てはまります。

これは私が使用しているデータセットですnetDf:

 structure(list(collegeName = c("college1", "college1", "college2", 
"college3", "college3", "college3", "college4", "college5", "college5", 
"college6", "college6", "college6", "college7", "college7", "college7", 
"college8", "college9", "college10", "college10", "college11"
), organizationName = c("employer2", "employer3", "employer2", 
"employer1", "employer2", "employer3", "employer2", "employer2", 
"employer3", "employer1", "employer2", "employer3", "employer1", 
"employer2", "employer3", "employer2", "employer2", "employer2", 
"employer3", "employer2"), count = c(858, 176, 461, 201, 2266, 
495, 430, 1992, 290, 127, 1754, 549, 136, 2839, 686, 638, 275, 
1388, 387, 188), group = c(2, 3, 2, 1, 2, 3, 2, 2, 3, 1, 2, 3, 
1, 2, 3, 2, 2, 2, 3, 2)), .Names = c("collegeName", "organizationName", 
"count", "group"), row.names = c(NA, -20L), class = "data.frame")

そして、これはLinksデータセットです:

structure(list(collegeName = c(0, 0, 1, 2, 2, 2, 3, 4, 4, 5, 
5, 5, 6, 6, 6, 7, 8, 9, 9, 10), organizationName = c(1, 2, 1, 
0, 1, 2, 1, 1, 2, 0, 1, 2, 0, 1, 2, 1, 1, 1, 2, 1), count = c(858, 
176, 461, 201, 2266, 495, 430, 1992, 290, 127, 1754, 549, 136, 
2839, 686, 638, 275, 1388, 387, 188), group = c(2, 3, 2, 1, 2, 
3, 2, 2, 3, 1, 2, 3, 1, 2, 3, 2, 2, 2, 3, 2)), .Names = c("collegeName", 
"organizationName", "count", "group"), row.names = c(NA, -20L
), class = "data.frame")

また、4 番目の変数をバブル サイズにマッピングすることは可能でしょうか? たとえばcount、従業員に関連するバブルのサイズにマッピングしたいとします。どうすればそれを行うことができますか?

4

1 に答える 1

3

LinksNodesデータ フレームが で指定されている要件を満たしていないと思います?forceNetwork。代わりに、次のことができます。

library(networkD3)
set.seed(1)

nodes <- data.frame(Label = unique(c(netDf[,1], netDf[,2])))
nodes$Group <- as.factor(substr(nodes$Label, 1, 3))
nodes <- merge(
  nodes, 
  aggregate(count~organizationName, netDf, sum), 
  by.x="Label", by.y="organizationName", 
  all.x=TRUE
)
nodes$count[is.na(nodes$count)] <- 1

links <- transform(netDf, 
  Source = match(netDf$collegeName, nodes$Label)-1, 
  Target = match(netDf$organizationName, nodes$Label)-1
)

forceNetwork(
  Links = transform(links, count = count/min(count)), 
  Nodes = nodes, 
  Source = 'Source', 
  Target = 'Target', 
  Value='count',
  NodeID = 'Label', 
  Group = "Group", 
  Nodesize = "count",
  legend = TRUE, 
  opacity = 1,
  radiusCalculation = JS("Math.log(d.nodesize)+6")
)

ここに画像の説明を入力

于 2016-09-18T23:50:34.940 に答える