1

2 つの列,を持つかなり大きなデータセットがあります。これら 2 つの列のさまざまな要素間の関係を視覚化するための簡単なネットワーク図を作成しようとしているので、以下の簡単な例を試してみました。fromto

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)

library(networkD3)
simpleNetwork(NetworkData,linkColour="yellow")

上記の例と私のデータセットの唯一の違いは、データセットに1500/観測があることです。ただし、関数はさまざまな関連付けの巨大なひまわり型の視覚化を生成しており、これはあまり快適ではありません。simpleNetwork

[ネットワークグラフ出力][2]

私の質問は、1) このデータを視覚化するより良い方法はありますか? 2) 少なくともターゲット ノードをソース ノードとは異なる色にするにはどうすればよいですか?

アドバイスや提案は大歓迎です。前もって感謝します。

4

1 に答える 1

1

一般的に、質問の最初の部分に答えるために、説明しようとしていることに応じて、さまざまな視覚化が意味を持つ場合があります。ネットワークの基本的な説明を取得してみてください: エッジ数、密度、平均。パスの距離、そして、あなたが見ているリレーショナルデータの種類を知ることにおいて、あなたはすでに遠くまで来ています. 上で lukeA が指摘したように、グラフの視覚化における洞察力は、手元のネットワーク データの構造に大きく依存しています。

ビジュアライゼーションは無意味である必要はありませんが、実際に分析を導き出すためではなく、教育的なポイントを証明するために使用することを認めます。最初に、グラフで視覚化したいものを考える必要があります。

何が望ましい洞察を与えるかを決定したら、ノードの色付けは実際に重要な視覚的ツールです。質問の 2 番目の部分については、引数をnetworkD3使用してノードに色を付ける必要があります。NodeGroupigraph ではベクトルを に割り当て V(graph)$color、sna-package では をvertex.col使用してプロットするときに引数に割り当てますgplot()

igraph の A からの距離で色分けされたグラフの例を次に示します。

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)

# Visualize using igraph
library(igraph)
g <- graph_from_edgelist(as.matrix(NetworkData), directed = TRUE)

# Colour by distance from first node:
heatmap <- colorRampPalette(c("red", "yellow"))(100)
distance.from.first.node <- distances(g, V(g)[1])
V(g)$color <- heatmap[1+round(distance.from.first.node / (max(distance.from.first.node)/(length(heatmap)-1)))]

# Plot
plot.igraph(g)

あなたが提供したデータをプロットすることから何かポイントを考えることができませんが、もし必要なら、ここにあります:

# Get the data you downloaded vvv(MAKE YOUR OWN PATH HERE)vvv
data <- read.csv(file="Downloads/Network.txt", sep="|")
# Remove your missing data
data <- data[data[,1]!="",]
data <- data[data[,2]!="",]
g2 <- graph_from_edgelist(as.matrix(data), directed = TRUE)

# Re-colour and plot:
distance.from.first.node <- distances(g2, V(g2)[1])
V(g2)$color <- heatmap[1+round(distance.from.first.node / (max(distance.from.first.node)/(length(heatmap)-1)))]

# Plot with smaller vertexes and no labels
plot.igraph(g2, vertex.size=4, vertex.label=NA)
于 2016-11-25T16:44:35.400 に答える