2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【R-igraph】エッジの重みを濃淡で表現する

Last updated at Posted at 2019-11-16

Rのigraphパッケージを使ってネットワークグラフの可視化をするとき、エッジの重みを表現する方法で結構悩んだので解決案のひとつとして共有します。

例えば、重みをエッジの太さで表現すると
失敗.png
・エッジが重なる
・矢印が埋もれて向きがわかりにくい(edge.arrow.sizeにE(g)$weightを指定しても大きさが同じになってしまい、太いエッジでは隠れてしまう)

ということがあるので
g1938.png
こんな感じでエッジの濃淡で重みを表現したいと思います。

ggraphを使ってやる方法は以下のページで解説されています。
Draw Network in R (control edge thickness plus non-overlapping edges)

方法

plot() のオプション edge.colorrgb() を指定し、引数に重みを渡すだけです。
ただし、 rgb()の引数にするため、重みを0~1の範囲に変換します。
変換方法は可視化の目的に応じたものを選べばOKだと思います
(正規化すると重み最小のエッジが消えてしまうので注意)。
今回は単純に、最大値で割るだけにします。
1から引くことで重みが大きいほど暗く(濃く)なるようにします

# g はグラフオブジェクト
w <- E(g)$weight
c = 1 - (w / max(w))

plot()の引数で

edge.color = rgb(c,c,c)

と指定すれば最大値に近いエッジほど濃く描画されます。
#####例
冒頭に載せたグラフのコードです

plot(g ,edge.width = 1, edge.curved = 0.2,
	layout=layout, edge.label = w, edge.color = rgb(c,c,c),
	vertex.size = 50, vertex.color = 0)
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?