| Home |
2012.12.19
フリーソフトで3分で描くユークリッド原論の命題関連図/人文系のためのグラフ表現
エウクレイデス(ユークリッド)『ストイケイア(原論)』の、命題間の関係を図に描け、というのが昔々宿題に出た。
第一部だけだったが、すべて手で描いたから(どこにどの命題を配置すると分かりやすいのか、いろいろ試行錯誤して)、ひどくめんどくさかったことを覚えている。
今ならパソコンでちょちょいのちょいだろうな、と昭和の言い回しで考えたが、長いこと実際にはやってみなかった。
手で描くのが勉強になるのだと、またお目玉(これも近頃聞かなくなった)をくらいそうだが(今でもこんな宿題を出してくれる、素敵な先生ごめんなさい)、やってみたら3分でできた。

(クリックで拡大)
なんのことはないdot言語とGraphviz ※を使ったのだが、言語というほどの面倒も無い。
※ Graphvizは、AT&T研究所が開発した、オープンソースのグラフ(ダイヤグラムや有向グラフ)描画ツール。
dot言語で書かれたスクリプト(テキストファイル)からグラフをつくり、png、svgなどを生成するツール(出力できるフォーマットはこちら)。
Graphviz本家のホームページのダウンロード http://www.graphviz.org/Download..php
(Linux, Windows, Mac OS X用)
日本語での解説は、
Graphviz チュートリアル http://homepage3.nifty.com/kaku-chan/graphviz/
dotを使ったグラフ描画 http://www.cbrc.jp/~tominaga/translations/graphviz/dotguide.pdf
aとbを繋ぎたいなら
とつなぎたいものを間に、-> を挟めばいい。
たくさんのノードを繋ぎたいなら、graph { }の間に、セミコロンで区切って何行でも書けばいい。
下のように、チェーン状のつながりを1行にまとめることもできる。
下のように{ }でくくってまとめてもよい。{ }内の要素はスペースで区切る。
これをテキストファイルとしてセーブすれば、人間がやることは完了である。
あとはGraphvizに件のテキストファイルを渡してやればよい。
各定理ごとにバラバラに入れていっても、うまくまとめたり配置したりして、さっきみたいなのを描いてくれる。
あまりに楽だったので、スピノザに『エチカ』(幾何学的秩序にしたがって論証された倫理学 Ethica ordine geometrico demonstrata)の第1部(神について)についてもやってみた。

(クリックで拡大)
昔作った「対戦型哲学史
」の、すべての対戦関係を一枚にまとめた図もつくってみた。

(クリックで拡大)
同じ哲学者の間を複数の線が結んでいるのは、いくつもの対戦が行われているからである。
孤立しているのは、そのあたりの哲学者たちを結びつける対戦がまだ書けてないからである。
新しい対戦を追加すれば、自動的に対戦相関図を更新する仕組みも、すぐに作れそうだが、今は取り掛かる時間がない。
(直観を超えた何かが組み上がることを目指して→考える道具としてのdot言語 / Graphviz 読書猿Classic: between / beyond readers
へつづく)
(関連記事)
フリーソフトですべての思想ideasのつながりを1枚にまとめたインフォグラフィックがびっくりするくらい簡単に描けた 読書猿Classic: between / beyond readers

第一部だけだったが、すべて手で描いたから(どこにどの命題を配置すると分かりやすいのか、いろいろ試行錯誤して)、ひどくめんどくさかったことを覚えている。
今ならパソコンでちょちょいのちょいだろうな、と昭和の言い回しで考えたが、長いこと実際にはやってみなかった。
手で描くのが勉強になるのだと、またお目玉(これも近頃聞かなくなった)をくらいそうだが(今でもこんな宿題を出してくれる、素敵な先生ごめんなさい)、やってみたら3分でできた。

(クリックで拡大)
なんのことはないdot言語とGraphviz ※を使ったのだが、言語というほどの面倒も無い。
※ Graphvizは、AT&T研究所が開発した、オープンソースのグラフ(ダイヤグラムや有向グラフ)描画ツール。
dot言語で書かれたスクリプト(テキストファイル)からグラフをつくり、png、svgなどを生成するツール(出力できるフォーマットはこちら)。
Graphviz本家のホームページのダウンロード http://www.graphviz.org/Download..php
(Linux, Windows, Mac OS X用)
日本語での解説は、
Graphviz チュートリアル http://homepage3.nifty.com/kaku-chan/graphviz/
dotを使ったグラフ描画 http://www.cbrc.jp/~tominaga/translations/graphviz/dotguide.pdf
aとbを繋ぎたいなら
digraph{a -> b;} |
とつなぎたいものを間に、-> を挟めばいい。
たくさんのノードを繋ぎたいなら、graph { }の間に、セミコロンで区切って何行でも書けばいい。
digraph { 公準3 -> 定理1; 公準1 -> 定理1; 定義15 -> 定理1; 公理1 -> 定理1; 公準1 -> 定理2; ・・・・・ (以下略) } |
下のように、チェーン状のつながりを1行にまとめることもできる。
digraph{ a -> b -> c -> d } |
下のように{ }でくくってまとめてもよい。{ }内の要素はスペースで区切る。
digraph { {公準3 公準1 定義15 公理1} -> 定理1; 公理2 -> {定理2 定理3 定理5} ; } ![]() |
これをテキストファイルとしてセーブすれば、人間がやることは完了である。
あとはGraphvizに件のテキストファイルを渡してやればよい。
各定理ごとにバラバラに入れていっても、うまくまとめたり配置したりして、さっきみたいなのを描いてくれる。
あまりに楽だったので、スピノザに『エチカ』(幾何学的秩序にしたがって論証された倫理学 Ethica ordine geometrico demonstrata)の第1部(神について)についてもやってみた。

(クリックで拡大)
昔作った「対戦型哲学史


(クリックで拡大)
同じ哲学者の間を複数の線が結んでいるのは、いくつもの対戦が行われているからである。
孤立しているのは、そのあたりの哲学者たちを結びつける対戦がまだ書けてないからである。
新しい対戦を追加すれば、自動的に対戦相関図を更新する仕組みも、すぐに作れそうだが、今は取り掛かる時間がない。
(直観を超えた何かが組み上がることを目指して→考える道具としてのdot言語 / Graphviz 読書猿Classic: between / beyond readers

(関連記事)
フリーソフトですべての思想ideasのつながりを1枚にまとめたインフォグラフィックがびっくりするくらい簡単に描けた 読書猿Classic: between / beyond readers

| Home |