[Stata][Venn diagram][Python]Stataでベン図を書く方法

woman in a beige coat writing on a glass panel using a whiteboard marker python
Photo by Nataliya Vaitkevich on Pexels.com

ベン図 (Venn diagram)

ベン図 - Wikipedia

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白色
“pen”の数字と色の対応。

例題データセットでの例

付属の例題データセットを用いる。

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にあった。

MacBookで画像の白黒を反転する方… - Apple コミュニティ

Windowsでもいくらでもやり方はある気がする。

コメント

タイトルとURLをコピーしました