ベン図 (Venn diagram)
Stataでベン図
色々なLibraryがあって、pvennが有名だと思うけれど、図に数字が表示されないので不満。そこでvendiagというLibraryを使ったのだが、なんとバックグラウンドカラーが黒色から変更できない。そこで、まずはvendiagでベン図を作成してから、白黒反転させるというちょっと面倒なことをやった。
インストール
インストールはいつものコマンドでOK。
ssc install venndiag
ベン図の作成
これもそんなにオプションもないから、
venndiag var1 var2, pen(999)
とする。この”pen”オプションで、左から順に文字の色、2つ目の変数の円の色、1つ目の変数の円の色\(\cdots\)となっている(順番が複雑なので注意)。なので、例えば変数が\(3\)個あるときは、
vandiag var1 var2 var3, pen(1234)
とすれば文字の色が\(1\)、”var1″の円の色が\(3\)、”var2″の円の色が\(2\)、”var3″の円の色が\(4\)というように指定される。ちなみに、”pen”の数字と色の対応は以下のようになっている。
数字 | 色 |
0 | 黒 |
1 | 水色 |
2 | 黄色 |
3 | 赤色 |
4 | 緑色 |
5 | ピンク色 |
6 | 青色 |
7 | 紫色 |
8 | 灰色 |
9 | 白色 |
例題データセットでの例
付属の例題データセットを用いる。
sysuse bpwide.dta
データをロードしてから、
venndiag agegrp sex, pen(999)
とすると、以下のような(この場合意味はあまりない図であるが)ベン図が出力される。
以下ではこれを反転させて、背景白、文字が黒の図に変換する。
OpenCVのインストール
ここからはPythonを用いる。まずはOpenCVのインストール。
pip install opencv-python
そしてcv2をimportしておく。
import cv2
ここからは何も難しいことはない。
img = cv2.imread("/Path/ex.png", cv2.IMREAD_GRAYSCALE)
img = 255 -img
cv2.imwrite("/Path/ex_monoreverse.png", img)
読み込んで、スケールを反転(255から自身を引く)させて、書き出すだけ。Pathは適宜環境に合わせて変えると良い。
反転させたベン図。
以下のようになる。
まぁまぁ満足なベン図が得られた。
関連記事
2つの変数をまとめる
labelの使い方、ラベル名の変更
Stataで複数のグラフを1枚にまとめる方法
関連リンク
ちなみに、Pythonを使いたくない、あるいは使えないという人には、Mac限定であるが、画像を白黒反転させる方法の記事がApppleのdiscussionにあった。
Windowsでもいくらでもやり方はある気がする。
コメント