Graphlet (.gml)
Graphlet (.gml)
予備知識
-
- Graphlet GMLグラフデータ形式.
- グラフの保管と交換に使われる.
- GMLはGraph Modeling Languageの頭字語である.
- Graphletグラフ編集ソフトウェアのネイティブ形式.
- 属性付きの有向・無向グラフを保管する.
- ユーザ定義のグラフ,辺,頂点属性を含むことができる.
- ASCII形式.
- 1995年に開発された.
ImportとExport
- Import["file.gml"]は指定のファイルに保管された,単独のGraphオブジェクトとして与えられたグラフをインポートする.
- Export["file.gml",expr]は1つのグラフの隣接行列または辺情報をGraphlet GML形式にエキスポートする.
- Import["file.gml",elem]はGraphlet GMLファイルから指定の要素をインポートする.
- Import["file.gml",{elem,suba,subb,…}]はサブ要素をインポートする.
- Import["file.gml",{{elem1,elem2,…}}]は複数の要素をインポートする.
- インポート形式はImport["file","Graphlet"]またはImport["file",{"Graphlet",elem,…}]で指定できる.
- Export["file.gml",expr,elem]は expr が要素 elem を指定するものとして扱って,Graphlet GMLファイルを作成する.
- Export["file.gml",{expr1,expr2,…},{{elem1,elem2,…}}]はそれぞれの expri が対応する elemi を指定するものとして扱う.
- Export["file.gml",expr,opt1->val1,…]は指定されたオプションの要素が指定された値を取るものとして expr をエキスポートする.
- Export["file.gml",{elem1->expr1,elem2->expr2,…},"Rules"]はエキスポートする要素を規則を使って指定する.
- 一般的な情報は,以下の関数ページを参照のこと.
-
Import, Export ファイルからインポートする,あるいはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートする,あるいは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートする,あるいはバイト配列へエキスポートする
要素
- 一般的なImport 要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - データ表現要素:
-
"AdjacencyMatrix" 辺情報(行列として与えられる) "EdgeAttributes" 辺属性(規則のリストとして表示される) "EdgeRules" グラフの連結性データ(規則の配列として与えられる) "Graph" ファイルに保管されたグラフ(Graphオブジェクトとして与えられる) "GraphAttributes" グラフ属性(規則のリストとして表される) "Graphics" このファイルに保持されたグラフ(グラフプロットとして描画される) "VertexAttributes" 頂点の属性(規則のリストとして表示される) "VertexCount" グラフの頂点の数 "VertexList" 文字列のリストとして与えられる頂点 - ImportはGraphlet GMLからインポートする際に,デフォルトで"Graph"要素を使用する.
オプション
- 一般的なImportオプション:
-
ImageSize Automatic グラフを表示する画像の全体的な大きさを指定する - GMLからインポートする際は,Graphがサポートするすべてのオプションを与えることができる.一般的な設定を示す:
-
EdgeLabels Automatic 辺に対するラベルとラベルの配置 EdgeWeight Automatic 辺の重み VertexCoordinates Automatic 頂点に対する中心座標 VertexLabels Automatic 頂点に対するラベルとラベルの配置 VertexShape Automatic 頂点のグラフィックスの形状 - "Graphics"としてインポートする際は,GraphPlotがサポートするすべてのオプションを与えることができる.一般的な設定は次の通りである:
-
DirectedEdges Automatic 辺を有向矢印で示すかどうか EdgeLabels Automatic 辺に与えられたラベルを含むかどうか EdgeShapeFunction Automatic 辺に明示的なグラフィックスを与える関数 VertexLabels Automatic 頂点名をラベルとして示すかどうか VertexShapeFunction Automatic 頂点に明示的なグラフィックスを与える関数 - Exportオプション:
-
DirectedEdges Automatic エキスポートするデータが有向グラフを表すかどうか - 辺規則または対称隣接行列からエキスポートするとき,デフォルトでは辺は無向であるとされる.
- Graphオブジェクトをエキスポートする際,Wolfram言語のグラフ属性値はしばしばCompressを使って文字列としてエキスポートされる.
例題
すべて開く すべて閉じる例 (7)
Graphlet GMLからグラフをインポートし,Graphオブジェクトとして描画する:
Import["ExampleData/bigdipper.gml"]Import["ExampleData/bigdipper.gml", {{"VertexList", "VertexAttributes"}}]Import["ExampleData/triangle.gml", VertexLabels -> "Name"]GraphオブジェクトをGMLにエキスポートする:
Export["graph.gml", PetersenGraph[5, 2]]Export["directed.gml", {1 -> 2, 1 -> 3, 1 -> 5, 2 -> 4, 2 -> 6, 3 -> 4, 3 -> 7, 4 -> 8, 5 -> 6, 5 -> 7, 6 -> 8, 7 -> 8}, DirectedEdges -> True]上記例と同じグラフの非対称隣接行列をGMLにエキスポートする:
Export["directed2.gml", {{0, 1, 1, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}}, "Graphlet"]Graphlet GMLグラフの隣接行列表現をMatrixPlotとして描画する:
Import["ExampleData/triangle.gml", "AdjacencyMatrix"]//MatrixPlotスコープ (5)
MapThread[Rule, Import["ExampleData/triangle.gml", {"Graphlet", {"VertexList", "VertexAttributes"}}]]Sparse6ファイルに保管されている最初のグラフをGraphlet GMLファイルに変換する:
Export["sparse.gml", Import["ExampleData/sparse.s6", {"AdjacencyMatrix", 1}]]辺規則,および辺とグラフの属性のリストからGraphlet GMLファイルを生成する:
ExportString[{
"EdgeRules" -> {"A" -> "B", "B" -> "C", "C" -> "A"},
"GraphAttributes" -> {"comment" -> "Sample comment"},
"EdgeAttributes" -> {
{"label" -> "Edge from node A to node B", "weight" -> "0.1"}, {"label" -> "Edge from node B to node C", "weight" -> "0.5"}, {"label" -> "Edge from node C to node A", "weight" -> "0.5"}}
}, {"Graphlet", "Rules"}, DirectedEdges -> True]ExportString[{
"AdjacencyMatrix" -> {{0, 1, 1}, {1, 0, 0}, {1, 0, 0}},
"VertexList" -> {"A", "B", "C"},
"VertexAttributes" -> {{"color" -> "red"}, {}, {"color" -> "blue"}}
}, {"Graphlet", "Rules"}]ラスタ画像をラベルとして持つGraphオブジェクトをエキスポートする:
Export["rasterlabel.gml", Graph[{1 -> 2}, VertexLabels -> {2 -> Graphics[Rasterize[Sqrt[π]]]}]]履歴
2010 で導入 (8.0)