最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?matplotlib可視化之繪制韋恩圖

 更新時間:2022年02月24日 15:42:13   作者:qq_21478261  
韋恩圖可以清晰的反映不同組數(shù)據(jù)共有和各自獨有的部分,本文將詳細(xì)為大家介紹如下兩種python繪制venn圖策略:matplotlib_venn和pyvenn,需要的可以參考一下

本文速覽

2組數(shù)據(jù)venn

3組數(shù)據(jù)venn 

4組數(shù)據(jù)venn 

5組數(shù)據(jù)venn圖

6組數(shù)據(jù)venn 

python中Matplotlib并沒有現(xiàn)成的函數(shù)可直接繪制venn圖, 不過已經(jīng)有前輩基于matplotlib.patches及matplotlib.path開發(fā)了兩個輪子:

matplotlib_venn【2~3組數(shù)據(jù),比較多博客介紹】:https://github.com/konstantint/matplotlib-venn

pyvenn【2~6組數(shù)據(jù)】:https://github.com/tctianchi/pyvenn

1、 matplotlib_venn

該模塊包含'venn2', 'venn2_circles',  'venn3', 'venn3_circles'四個關(guān)鍵函數(shù),這里主要詳細(xì)介紹'venn2','venn3'同理。

(1)2組數(shù)據(jù)venn圖

matplotlib_venn.venn2(subsets, set_labels=('A', 'B'), set_colors=('r', 'g'), alpha=0.4, normalize_to=1.0, ax=None, subset_label_formatter=None)

繪圖數(shù)據(jù)格式

subsets參數(shù)接收繪圖數(shù)據(jù)集,以下5種方式均可以,注意細(xì)微異同。

#導(dǎo)入依賴packages
import matplotlib.pyplot as plt
from matplotlib_venn import venn2,venn2_circles#記得安裝matplotlib_venn(pip install matplotlib_venn 或者conda install matplotlib_venn)
 
 
# subsets參數(shù)
#繪圖數(shù)據(jù)的格式,以下5種方式均可以,注意異同
subset = [[{1,2,3},{1,2,4}],#列表list(集合1,集合2)
          ({1,2,3},{1,2,4}),#元組tuple(集合1,集合2)
          {'10': 1, '01': 1, '11': 2},#字典dict(A獨有,B獨有,AB共有)
          (3, 3, 2),####元組tuple(A有,B有,AB共有),注意和其它幾種方式的異同點
          [3,3,2]#列表list(A有,B有,AB共有)           
         ]
for i in subset:
    my_dpi=100
    plt.figure(figsize=(500/my_dpi, 500/my_dpi), dpi=my_dpi)
    g=venn2(subsets=i)#默認(rèn)數(shù)據(jù)繪制venn圖,只需傳入繪圖數(shù)據(jù)
    plt.title('subsets=%s'%str(i))
    plt.show()

一些簡單參數(shù)介紹 

my_dpi=150
plt.figure(figsize=(580/my_dpi, 580/my_dpi), dpi=my_dpi)#控制圖尺寸的同時,使圖高分辨率(高清)顯示
g=venn2(subsets = [{1,2,3},{1,2,4}], #繪圖數(shù)據(jù)集
        set_labels = ('Label 1', 'Label 2'), #設(shè)置組名
        set_colors=("#098154","#c72e29"),#設(shè)置圈的顏色,中間顏色不能修改
        alpha=0.6,#透明度
        normalize_to=1.0,#venn圖占據(jù)figure的比例,1.0為占滿
       )
plt.show()

所有圈外框?qū)傩栽O(shè)置 

my_dpi=150
plt.figure(figsize=(580/my_dpi, 580/my_dpi), dpi=my_dpi)
g=venn2(subsets = [{1,2,3},{1,2,4}],
        set_labels = ('Label 1', 'Label 2'),
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
       )
g=venn2_circles(subsets = [{1,2,3},{1,2,4}], 
        linestyle='--', linewidth=0.8, color="black"#外框線型、線寬、顏色
       )
plt.show()

單個圈特性設(shè)置

g.get_patch_by_id('10')返回一個matplotlib.patches.PathPatch對象,有諸多參數(shù)可個性化修改 ,詳細(xì)見matplotlib官網(wǎng)。

my_dpi=150
plt.figure(figsize=(550/my_dpi, 550/my_dpi), dpi=my_dpi)
 
g=venn2(subsets = [{1,2,3},{1,2,4}], 
        set_labels = ('Label 1', 'Label 2'), 
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
       )
g.get_patch_by_id('10').set_edgecolor('red')#左圈外框顏色
g.get_patch_by_id('10').set_linestyle('--')#左圈外框線型
g.get_patch_by_id('10').set_linewidth(2)#左圈外框線寬
g.get_patch_by_id('01').set_edgecolor('green')#右圈外框顏色
g.get_patch_by_id('11').set_edgecolor('blue')#中間圈外框顏色
plt.show()

單個圈文本設(shè)置

g.get_label_by_id('10') 返回一個matplotlib.text.Text對象,有諸多參數(shù)可個性化修改 ,詳細(xì)見matplotlib官網(wǎng)。

my_dpi=150
plt.figure(figsize=(600/my_dpi, 600/my_dpi), dpi=my_dpi)
g=venn2(subsets = [{1,2,3},{1,2,4}], 
        set_labels = ('Label 1', 'Label 2'), 
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
       )
g.get_label_by_id('10').set_fontfamily('Microsoft YaHei')#左圈中1的字體設(shè)置為微軟雅黑
g.get_label_by_id('10').set_fontsize(20)#1的大小設(shè)置為20
g.get_label_by_id('10').set_color('r')#1的顏色
g.get_label_by_id('10').set_rotation(45)#1的傾斜度

添加額外注釋 

my_dpi=150
plt.figure(figsize=(580/my_dpi, 580/my_dpi), dpi=my_dpi)#控制圖尺寸的同時,使圖高分辨率(高清)顯示
g=venn2(subsets = [{1,2,3},{1,2,4}], #繪圖數(shù)據(jù)集
        set_labels = ('Label 1', 'Label 2'), #設(shè)置組名
        set_colors=("#098154","#c72e29"),#設(shè)置圈的顏色,中間顏色不能修改
        alpha=0.6,#透明度
        normalize_to=1.0,#venn圖占據(jù)figure的比例,1.0為占滿
       )
 
plt.annotate('I like this green part!', 
             color='#098154',
             xy=g.get_label_by_id('10').get_position() - np.array([0, 0.05]), 
             xytext=(-80,40),
             ha='center', textcoords='offset points', 
             bbox=dict(boxstyle='round,pad=0.5', fc='#098154', alpha=0.6),#注釋文字底紋
             arrowprops=dict(arrowstyle='-|>', connectionstyle='arc3,rad=0.5',color='#098154')#箭頭屬性設(shè)置
            )
 
 
plt.annotate('She like this red part!', 
             color='#c72e29',
             xy=g.get_label_by_id('01').get_position() + np.array([0, 0.05]), 
             xytext=(80,40),
             ha='center', textcoords='offset points', 
             bbox=dict(boxstyle='round,pad=0.5', fc='#c72e29', alpha=0.6),
             arrowprops=dict(arrowstyle='-|>', connectionstyle='arc3,rad=0.5',color='#c72e29')
            )
 
plt.annotate('We both dislike this strange part!', 
             color='black',
             xy=g.get_label_by_id('11').get_position() + np.array([0, 0.05]), 
             xytext=(20,80),
             ha='center', textcoords='offset points', 
             bbox=dict(boxstyle='round,pad=0.5', fc='grey', alpha=0.6),
             arrowprops=dict(arrowstyle='-|>', connectionstyle='arc3,rad=-0.5',color='black')
            )
 
plt.show()

多子圖繪制venn圖 

fig,axs=plt.subplots(1,3, figsize=(10,8),dpi=150)
g=venn2(subsets = [{1,2,3},{1,2,4}], 
        set_labels = ('Label 1', 'Label 2'), 
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
        ax=axs[0],#該參數(shù)指定
       )
g=venn2(subsets = [{1,2,3,4,5,6},{1,2,4,5,6,7,8}], 
        set_labels = ('Label 3', 'Label 4'), 
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
        ax=axs[1],
       )
g=venn2(subsets = [{0,1,2,3},{1,2,4}], 
        set_labels = ('Label 5', 'Label 6'), 
        set_colors=("#098154","#c72e29"),
        alpha=0.6,
        normalize_to=1.0,
        ax=axs[2],
       )
plt.show()

(2)3組數(shù)據(jù)venn圖

matplotlib_venn.venn3(subsets, set_labels=('A', 'B', 'C'), set_colors=('r', 'g', 'b'), alpha=0.4, normalize_to=1.0, ax=None, subset_label_formatter=None)

參數(shù)和venn2幾乎一樣,介紹幾個重要參數(shù) 

基本參數(shù)介紹

my_dpi=150
plt.figure(figsize=(600/my_dpi, 600/my_dpi), dpi=my_dpi)#控制圖尺寸的同時,使圖高分辨率(高清)顯示
g=venn3(subsets = [{1,2,3},{1,2,4},{2,6,7}], #傳入三組數(shù)據(jù)
        set_labels = ('Label 1', 'Label 2','Label 3'), #設(shè)置組名
        set_colors=("#01a2d9", "#31A354", "#c72e29"),#設(shè)置圈的顏色,中間顏色不能修改
        alpha=0.8,#透明度
        normalize_to=1.0,#venn圖占據(jù)figure的比例,1.0為占滿
       )
plt.show()

個性化設(shè)置圖中7部分每一部分

(100, 010, 110, 001, 101, 011, 111)分別代替每一小塊,那么代替的是那一小塊了? 

my_dpi=150
plt.figure(figsize=(600/my_dpi, 600/my_dpi), dpi=my_dpi)
g=venn3(subsets = [{1,2,3},{1,2,4},{2,6,7}],
        set_labels = ('Label 1', 'Label 2','Label 3'),
        set_colors=("#01a2d9", "#31A354", "#c72e29"),
        alpha=0.8,
        normalize_to=1.0,
       )
 
for i in list('100, 010, 110, 001, 101, 011, 111'.split(', ')):
    g.get_label_by_id('%s'%i).set_text('%s'%i)#修改每個組分的文本
    
#然后就可以如同venn2中那樣個性化設(shè)置了
g.get_label_by_id('110').set_color('red')#1的顏色
g.get_patch_by_id('110').set_edgecolor('red')
 
plt.show()

2、pyvenn

同樣,該庫還是基于matplotlib.patches二次開發(fā);

區(qū)別于上文,pyvenn支持2到6組數(shù)據(jù);matplotlib_venn更加靈活多變。

pyvenn具有'venn2', 'venn3', 'venn4', 'venn5', 'venn6'五大主要函數(shù),這里主要介紹venn2,其它同理。

2組數(shù)據(jù)venn

venn.draw_annotate、venn.draw_text、venn.venn2中的fill()參數(shù)非常助于個性化設(shè)置。

venn2(labels, names=['A', 'B'], **options)   
import matplotlib.pyplot as plt
 
#添加pyvenn路徑
import sys
sys.path.append(r'path\pyvenn-master')
import venn
 
mycolor=[[0.10588235294117647, 0.6196078431372549, 0.4666666666666667,0.6],
         [0.9058823529411765, 0.1607843137254902, 0.5411764705882353, 0.6]]
 
labels = venn.get_labels([[1,2,3,4,5,6],[1,2,4,5,6,7,8]], fill=['number', 
                                                                'logic',#開啟每個組分代碼
                                                                'percent'#每個組分的百分比
                                                               ],
                        )
fig, ax = venn.venn2(labels,
                    names=list('AB'),
                    dpi=96,
                    colors=mycolor,#傳入RPGA色號,直接傳hex色號或者RGB會導(dǎo)致重疊部分被覆蓋
                    fontsize=15,#控制組名及中間數(shù)字大小
                   
                    
                    )
plt.style.use('seaborn-whitegrid')
ax.set_axis_on()#開啟坐標(biāo)網(wǎng)格線
#ax.set_title('venn2')
 
 
 
# 提取plt.annotate部分參數(shù)
venn.draw_annotate(fig, ax, x=0.3, y=0.18, #箭頭的位置
                   textx=0.1, texty=0.05, #箭尾的位置
                   text='Aoligei!', color='r', #注釋文本屬性
                   arrowcolor='r',#箭頭的顏色等屬性
                  )
 
#添加文本
venn.draw_text(fig, ax, x=0.25, y=0.2, text='number:logic(percent)',
               fontsize=12, ha='center', va='center')

3組數(shù)據(jù)venn

labels = venn.get_labels([range(10), range(5, 15), range(3, 8)], fill=['number',
                                                                       'logic',
                                                                       'percent'
                                                                      ]
                        )
fig, ax = venn.venn3(labels, names=list('ABC'),dpi=96)
fig.show()

4組數(shù)據(jù)venn

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17)], fill=['number', 
                                                                                     'logic',
                                                                                     'percent'                                                                                     
                                                                                    ])
fig, ax = venn.venn4(labels, names=list('ABCD'))
fig.show()

5組數(shù)據(jù)venn

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17), range(10, 20)], fill=['number',
                                                                                                    'logic',
                                                                                                    'percent'
                                                                                                   ])
fig, ax = venn.venn5(labels, names=list('ABCDEF'))
fig.show()

6組數(shù)據(jù)venn

labels = venn.get_labels([range(10), range(5, 15), range(3, 8), range(8, 17), range(10, 20), range(13, 25)], fill=['number', 'logic','percent'])
fig, ax = venn.venn6(labels, names=list('ABCDEF'))
fig.show()

以上就是Python matplotlib可視化之繪制韋恩圖的詳細(xì)內(nèi)容,更多關(guān)于Python matplotlib韋恩圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytorch神經(jīng)網(wǎng)絡(luò)參數(shù)管理方法詳細(xì)講解

    Pytorch神經(jīng)網(wǎng)絡(luò)參數(shù)管理方法詳細(xì)講解

    這篇文章主要介紹了Pytorch神經(jīng)網(wǎng)絡(luò)參數(shù)管理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-05-05
  • tensorflow中的數(shù)據(jù)類型dtype用法說明

    tensorflow中的數(shù)據(jù)類型dtype用法說明

    這篇文章主要介紹了tensorflow中的數(shù)據(jù)類型dtype用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python就將所有的英文單詞首字母變成大寫

    Python就將所有的英文單詞首字母變成大寫

    這篇文章主要給大家介紹了關(guān)于Python就將所有的英文單詞首字母變成大寫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解python如何調(diào)用C/C++底層庫與互相傳值

    詳解python如何調(diào)用C/C++底層庫與互相傳值

    Python作為一門腳本解釋語言,本身又很好的結(jié)合C++,所以使用Python開發(fā),在性能要求的地方調(diào)用C/C++底層庫,這簡直是神器。本文詳細(xì)介紹了Python調(diào)用C/C++底層庫,互相傳值問題,下面一起來看看。
    2016-08-08
  • 詳談python3 numpy-loadtxt的編碼問題

    詳談python3 numpy-loadtxt的編碼問題

    下面小編就為大家分享一篇詳談python3 numpy-loadtxt的編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python基于tkinter canvas實現(xiàn)圖片裁剪功能

    Python基于tkinter canvas實現(xiàn)圖片裁剪功能

    這篇文章主要介紹了Python基于tkinter canvas實現(xiàn)圖片裁剪功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python合并多張圖片成PDF

    Python合并多張圖片成PDF

    最近需要將記的筆記整理成一個pdf進行保存,所以就研究了一下如何利用Python代碼將拍下來的照片整個合并成一個pdf,感興趣的可以了解一下
    2021-06-06
  • 如何利用Fabric自動化你的任務(wù)

    如何利用Fabric自動化你的任務(wù)

    大家都知道Fabric是一個Python庫,可以通過SSH在多個host上批量執(zhí)行任務(wù)。你可以編寫任務(wù)腳本,然后通過Fabric在本地就可以使用SSH在大量遠程服務(wù)器上自動運行。這些功能非常適合應(yīng)用的自動化部署,或者執(zhí)行系統(tǒng)管理任務(wù)。本文將介紹如何利用Fabric自動化你的任務(wù)。
    2016-10-10
  • 基于Python制作一個解壓的內(nèi)存加速球

    基于Python制作一個解壓的內(nèi)存加速球

    安全管家助手什么的上總會帶一個內(nèi)存加速球,有關(guān)掉進程以及內(nèi)存清理的功能,本文就來利用Python制作一個解壓的內(nèi)存加速球,有需要的小伙伴可以參考下
    2023-10-10
  • Python繪圖之二維圖與三維圖詳解

    Python繪圖之二維圖與三維圖詳解

    這篇文章主要介紹了Python繪圖之二維圖與三維圖詳解,文中通過示例代碼與效果圖片一一對照介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

瓦房店市| 淮滨县| 南木林县| 铜川市| 南涧| 河东区| 镶黄旗| 开阳县| 宿州市| 逊克县| 页游| 博湖县| 江阴市| 从江县| 衡水市| 罗定市| 卓尼县| 宝山区| 连平县| 佛冈县| 泸溪县| 景洪市| 富源县| 琼结县| 康定县| 渝北区| 贞丰县| 贺兰县| 噶尔县| 宁阳县| 乌海市| 佛坪县| 永川市| 利川市| 鹿泉市| 合山市| 阿拉善右旗| 泸西县| 湖口县| 阜康市| 成安县|