2016-04-07 20 views
3

私は三角ベン図を作成しました。私はそれで3つの問題を解決することができないようです。サークルのラベルを移動するためのコードは何Venn3:サークルとラベルの位置を変更するにはどうすればよいですか?

  1. (すなわち、「SET1」、「SET2」、「SET3」)今1が離れすぎ円からなので。

  2. サークルを3つの等しいサイズにする/円のサイズを変更するコードは何ですか?

  3. プロットの周りに円を移動するコードとは何ですか?今のところ、set2はset3内にありますが、色分けされていますので、図をvenn図を表示する "標準的な"方法(つまり、中央にいくつかの重なりがある3つの別々の円)に近いようにします。

「set_x」、「set_alpha」などのコマンドを見つけるのは難しいと感じました。上記の質問で答えるマニュアルを誰かが知っていれば、私はそれを感謝するでしょう、私は必要なすべての情報を持つ1つの場所を見つけることができませんでした。

import sys 
import numpy 
import scipy 
from matplotlib_venn import venn3,venn3_circles 
from matplotlib import pyplot as plt 

#Build three lists to make 3 way venn diagram with                                
list_line = lambda x: set([line.strip() for line in open(sys.argv[x])]) 
set1,set2,set3 = list_line(1),list_line(2),list_line(3) 

#Make venn diagram                                        
vd = venn3([set1,set2,set3],set_labels=("Set1","Set2","Set3")) 

#Colours: get the HTML codes from the net                                  
vd.get_patch_by_id("100").set_color("#FF8000") 
vd.get_patch_by_id("001").set_color("#5858FA") 
vd.get_patch_by_id("011").set_color("#01DF3A") 

#Move the numbers in the circles                                    
vd.get_label_by_id("100").set_x(-0.55) 
vd.get_label_by_id("011").set_x(0.1) 

#Strength of color, 2.0 is very strong.                                   
vd.get_patch_by_id("100").set_alpha(0.8) 
vd.get_patch_by_id("001").set_alpha(0.6) 
vd.get_patch_by_id("011").set_alpha(0.8) 

plt.title("Venn Diagram",fontsize=14) 
plt.savefig("output",format="pdf") 

答えて

4

今1が離れすぎ円からあるので、サークルのラベル(すなわち「セット1」、「SET2」、「SET3」)を移動するためのコードがどのようなものです。

ようなもの:

lbl = vd.get_label_by_id("A") 
x, y = lbl.get_position() 
lbl.set_position((x+0.1, y-0.2)) # Or whatever 

"A""B"、及び"C"は三組を表す、事前に定義された識別子です。

サークルを3つの等しいサイズにする/円のサイズを変更するコードは何ですか?

あなたがサークル/領域サイズは、あなたのデータに対応しない場合(必ずしも良いアイデア)は、関数venn3_unweighted使用して重み付けされていない(「古典的」)、ベン図を得ることができます。

from matplotlib_venn import venn3_unweighted 
venn3_unweighted(...same parameters you used in venn3...) 

venn3_unweightedsubset_areasパラメータを指定すると、結果を不正行為および調整することができます。これは、各領域の相対サイズを指定する7要素ベクトルです。この場合、図は領域領域がsubset_areasであるように描かれますが、数字は実際のsubsetsから表示されます。例えば、試してみてください。

venn3_unweighted(...., subset_areas=(10,1,1,1,1,1,1)) 

プロットの周りに円を移動するためのコードは何ですか。

通常、円の位置を決めてその交差のサイズがデータに対応するようにするか、「デフォルト」の配置を使用します。 venn3venn3_unweightedの機能は、これら2つの要件に対応しています。円を自由に動かすことは可能ですが、いくつかの低レベルのコーディングが必要になります。

は、私はそれが困難な「set_x」などのコマンドは、「set_alpha」

あなたがv.get_label_by_idを呼び出すときに取得オブジェクトがmatplotlibのTextオブジェクトであるべきものを見つけることがわかりました。そのメソッドとプロパティについてはhereを読むことができます。 v.get_patch_by_idによって返されたオブジェクトは、PathPatchであり、参考のためにherehereと表示されます。

+0

ありがとう@KT。、実際にはあなたがvenn_unweightedについて私の問題を分類してしまった。プロットの周りで円を動かす必要はなく、これもラベルの問題を解決しました。それらの参照を調べます。 – Tom

関連する問題