blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS] においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

Rで離散的なグラフを描く

離散構造

ここで言うグラフは頂点と辺からなる離散構造のグラフであって、 一般的な関数の2次元空間への射影ではない。

そんなグラフを描くのは普通の関数よりも難しくて、 Rでも最初からサポートされているわけではないので、 追加のパッケージigraphを用いて描画する。

準備

Rを起動して以下のコマンドを打ち込むとigraphがインストールされる。 3分くらいかかる。

> install.packages("igraph")

データの準備

グラフのデータを用意します。

$ wget http://www-personal.umich.edu/~mejn/netdata/karate.zip
$ unzip -o karate.zip

これでカレントディレクトリにkarate.zip,karate.dat,karate.gmlが作られます。

描画してみる

karate <- read.graph("karate.gml",format="gml")
plot(karate)

↑の出力は↓。

描画アルゴリズムを変えてみる

離散グラフの描画アルゴリズムは多数あるが、 igraphに実装されているものをいくつか試してみた。

多次元尺度法(MDS)

plot(karate,layout=layout.mds)

plot(karate,layout=layout.circle)

plot(karate,layout=layout.sphere)

Fruchterman Reingold

plot(karate,layout=layout.fruchterman.reingold)

Kamada-Kawai

plot(karate,layout=layout.kamada.kawai)