システムとモデリング

modelica, Julia, Design Structure Matrix, SysML, 他モデリング全般について。

DSM-Design Structure MatrixをJulia言語のheatmap(by Seaborn)で描画&ネットワーク可視化(by GraphPlot)

 前回はDSM(Design Structure Matrix)をMatlabのheatmapで描画し、さらにネットワーク可視化を行いましたが、今回はJulia言語でそれをやってみます。 前回の記事は以下

otepipi.hatenablog.com

heatmapでDSMの可視化

wikipediaDSM例を描画します。

f:id:Otepipi:20190426224207p:plain

今回、プロットにはSeaborn.jlを使用します。Pythonでお馴染みの描画ライブラリをJuliaでwrappingしたものです。使用には同じくseabornがインストールされたpython環境が必要です。

github.com

Seabornの使用にあたっては以下の記事が参考になりました。

pythondatascience.plavox.info

描画するためのコードは以下のようになります。残念ながらこちらの環境では図のプレビューができなかったので、pngで保存しました。

using Seaborn

B=[ 0 1 0 0 0 1 0;0 0 0 1 0 0 0;1 0 0 0 0 0 1;0 0 0 0 1 0 0;
0 1 0 0 0 1 0;0 0 1 0 0 0 0;1 0 0 0 1 0 0]

xvalues = ["ElementA","ElementB","ElementC","ElementD","ElementE","ElementF","ElementG"];
yvalues = ["ElementA","ElementB","ElementC","ElementD","ElementE","ElementF","ElementG"];

heatmap(B,annot=true, cbar=false,square=true,cmap="Blues",linewidths="0.5",linecolor="grey",xticklabels = xvalues, yticklabels = yvalues )

plt.savefig("DSMtest.png",bbox_inches="tight")

以下のようにheatmapが描画されます。

f:id:Otepipi:20190428223949p:plain

ネットワーク可視化

有向グラフの作成にLightGraphs、グラフのプロットにGraphPlotパッケージをそれぞれ使用します。

github.com

juliagraphs.github.io

github.com

http://juliagraphs.github.io/GraphPlot.jl/

ネットワーク可視化するコードは以下のようになります。

using LightGraphs
using GraphPlot

B=[ 0 1 0 0 0 1 0;0 0 0 1 0 0 0;1 0 0 0 0 0 1;0 0 0 0 1 0 0;
0 1 0 0 0 1 0;0 0 1 0 0 0 0;1 0 0 0 1 0 0]

values = ["ElementA","ElementB","ElementC","ElementD","ElementE","ElementF","ElementG"];

G = DiGraph(B')

gplot(G,nodelabel = values,nodelabelc= "black")

実行することで以下のプロットが得られます。

f:id:Otepipi:20190428224520p:plain

パッケージの情報を集めるのにかなり労力はかかりましたが、DSMに関しては一応JuliaでもMatlabと同等程度のことはできそうですね。

今回はここまでにします。