DSM-Design Structure MatrixをMatlabのHeatMapで描画&ネットワーク可視化
前回の記事ではDSM(Design Structure Matrix)をJavaScriptで描画しましたが、今回はMatlabのHeatMapで描画してみます。Matlabはやはり有料ソフトだけあってかドキュメントが充実しており、HeatMap内のannotationの付け方もすぐにわかりました。 前回の記事は以下です。 otepipi.hatenablog.com
例題
参考にしたMatlabのドキュメントは以下です。
cdata = [ 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'}; h = heatmap(xvalues,yvalues,cdata,'ColorbarVisible','off'); h.Title = 'DSM例題'; h.XLabel = ''; h.YLabel = '';
これで次のように描画されました。
ネットワーク可視化
DSMはグラフ理論の派生ですので、構造をネットワーク形式で可視化することができます。下記を参考にしました。
以下のようにdigraph
を使用してDSMの行列から有向グラフを作成します。
cdata = [ 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'}; h = heatmap(xvalues,yvalues,cdata,'ColorbarVisible','off'); h.Title = 'DSM例題'; h.XLabel = ''; h.YLabel = ''; G = digraph(cdata',xvalues); plot(G,'Layout','force')
これにより以下のように描画されます。
DSMと等価なネットワークが無事吐き出されました。 このようなややこしいネットワークを1つの行列で表現できるDSMは中々強力な手法のように思えます。
今回はここまでにします。