コード例 #1
0
def venn2_plot(set1 = set(),
               set2 = set(),
               lab_set1 = 'Set1',
               lab_set2 = 'Set2',
               linewidth = 1,
               color_line = 'black',
               alpha_sets = 0.3,
               font_sets = False, # False o 'bold'
               size_vals_sets = 12,
               alpha_inter = 0.3,
               font_inter = False, # False o 'bold'
               size_vals_inter = 12,
               size_label = 12,
               font_label = False): # False o 'bold'
    v = venn2_unweighted(subsets = (set1, set2), set_labels = (lab_set1, lab_set2))
    c = venn2_circles(subsets = (1, 1, 1),
                    linestyle='--', linewidth= linewidth, color=color_line)
    v.get_patch_by_id('10').set_alpha(0)
    partes = ['10', '01', '11']
    partes2 = ['10', '01']
    venn_info = [[i, j] for i, j in zip(v.subset_labels, partes)]
    for i in venn_info:
        if i[0] != None:
            if i[1] in partes2:
                v.get_patch_by_id(i[1]).set_alpha(alpha_sets) # i[1] = el conjunto creado,  0 = alpha del conjunto
                v.get_label_by_id(i[1]).set_fontweight(font_sets)
                v.get_label_by_id(i[1]).set_fontsize(size_vals_sets)
            if i[1] == '11': # configurar la intersección independientemente '111'
                v.get_patch_by_id('11').set_alpha(alpha_inter) # i[1] = el conjunto creado,  0 = alpha del conjunto
                v.get_label_by_id('11').set_fontweight(font_inter)
                v.get_label_by_id('11').set_fontsize(size_vals_inter)    
    for text in v.set_labels:
        text.set_fontsize(size_label)
        text.set_fontweight(font_label)
コード例 #2
0
def draw_venn(title, names, numbers, out):

    if len(numbers) == 7:
        if numbers[0] + numbers[2] + numbers[4] + numbers[6] == 0:
            numbers = [numbers[1], numbers[3], numbers[5]]
            names = [names[1], names[2]]
        elif numbers[1] + numbers[2] + numbers[5] + numbers[6] == 0:
            numbers = [numbers[0], numbers[3], numbers[4]]
            names = [names[0], names[2]]
        elif numbers[3] + numbers[4] + numbers[5] + numbers[6] == 0:
            numbers = [numbers[0], numbers[1], numbers[2]]
            names = [names[0], names[1]]
        #fi
    #fi

    plt.cla()
    plt.figure(figsize=(10, 10))
    if len(numbers) == 7:
        plt.cla()
        plt.figure(figsize=(10, 10))
        v = venn3(subsets=numbers, set_labels=names)
        c = venn3_circles(subsets=numbers, linestyle='dashed')
    else:
        v = venn2(subsets=numbers, set_labels=names)
        c = venn2_circles(subsets=numbers, linestyle='dashed')
    #fi

    plt.title(title)
    plt.savefig(out)
コード例 #3
0
def draw_venn(title, names, numbers, out):
  
  if len(numbers) == 7:
    if numbers[0] + numbers[2] + numbers[4] + numbers[6] == 0:
      numbers = [ numbers[1], numbers[3], numbers[5] ];
      names   = [ names[1], names[2] ];
    elif numbers[1] + numbers[2] + numbers[5] + numbers[6] == 0:
      numbers = [ numbers[0], numbers[3], numbers[4] ];
      names   = [ names[0], names[2] ];
    elif numbers[3] + numbers[4] + numbers[5] + numbers[6] == 0:
      numbers = [ numbers[0], numbers[1], numbers[2] ];
      names   = [ names[0], names[1] ];
    #fi
  #fi
  
  plt.cla();
  plt.figure(figsize=(10,10))
  if len(numbers) == 7:
    plt.cla();
    plt.figure(figsize=(10,10))
    v = venn3(subsets=numbers, set_labels = names)
    c = venn3_circles(subsets=numbers, linestyle='dashed')
  else:
    v = venn2(subsets = numbers, set_labels = names);
    c = venn2_circles(subsets = numbers, linestyle='dashed');
  #fi
  
  plt.title(title)
  plt.savefig(out);
コード例 #4
0
def venn(in_label1, in_label2, inter_label, name1, name2, color1, color2,
         color_inter):
    from matplotlib import pyplot as plt
    from matplotlib_venn import venn2, venn2_circles

    # Subset sizes
    s = (
        50,  # Ab
        50,  # aB
        50,  # AB
    )

    v = venn2(subsets=s, set_labels=(name1, name2))

    # Subset labels
    v.get_label_by_id('10').set_text(in_label1)
    v.get_label_by_id('01').set_text(in_label2)
    v.get_label_by_id('11').set_text(inter_label)

    # Subset colors
    v.get_patch_by_id('10').set_color(color1)
    v.get_patch_by_id('01').set_color(color2)
    v.get_patch_by_id('11').set_color(color_inter)

    # Subset alphas
    v.get_patch_by_id('10').set_alpha(0.2)
    v.get_patch_by_id('01').set_alpha(0.2)
    v.get_patch_by_id('11').set_alpha(0.5)

    # Border styles
    c = venn2_circles(subsets=s, linestyle='solid')
    c[0].set_ls('solid')  # Line style
    c[0].set_lw(2.0)  # Line width

    return plt.show()
コード例 #5
0
ファイル: RNAseq_tools.py プロジェクト: jeburke/GeneTools
def venn_2sample(n, K, k, J, name1, name2, colors, p):
    '''Called by gene_venn'''
    A_only = K - k
    B_only = J - k
    AB = k
    s = (A_only, B_only, AB)

    fig, ax = plt.subplots(1)
    v = venn2(subsets=s, set_labels=(name1, name2), ax=ax)

    # Subset colors
    v.get_patch_by_id('10').set_color(colors[0])
    v.get_patch_by_id('01').set_color(colors[1])
    if AB > 0:
        v.get_patch_by_id('11').set_color(colors[2])

    # Subset alphas
    v.get_patch_by_id('10').set_alpha(0.8)
    v.get_patch_by_id('01').set_alpha(0.8)
    if AB > 0:
        v.get_patch_by_id('11').set_alpha(0.9)

    # Border styles
    c = venn2_circles(subsets=s, linestyle='solid', ax=ax)
    for sub_c in c:
        sub_c.set_lw(1.0)  # Line width

    p = '%.1E' % p

    ax.set_title(name1 + ' vs. ' + name2 + '\n p-value: ' + p, fontdict=font)
    fig.savefig(name1 + '_' + name2 + '_venn.pdf',
                format='pdf',
                bbox_inches='tight')
    plt.show()
    plt.clf()
コード例 #6
0
ファイル: venn.py プロジェクト: yontu24/companion-lab
def plot_venn(highlights):
    """ Plot a venn diagram with two intersecting sets A and B
    and highlight any combination of A, B and omega. """
    to_hide = set(['10', '11', '01'])-set(highlights)
    figure = plt.figure()
    ax=plt.gca()
    ax.text(0.7, 0.5, '$\Omega$', fontsize=16)
    if '00' in highlights:
        figure.patch.set_facecolor('grey')
    subsets={'10': 1, '01': 1, '11': 1}
    v = venn2(subsets, set_labels = ('A', 'B'), alpha=1)
    for p in to_hide:
        v.get_patch_by_id(p).set_color('w')
        v.get_patch_by_id(p).set_alpha(1)
    venn2_circles(subsets)
    plt.show()
コード例 #7
0
def make_venn_diagrams(cds, title=None):
    grps = [['KIRC', 'KIRP'], ['BRCA', 'HNSC', 'LUAD', 'STAD']]
    df = cds.long_panda
    gp = grps[0]
    sets = []
    for cnc in gp:
        cancer_sel = df['cancer_type'] == cnc
        temp = np.array(df['is_signif'][cancer_sel])
        sets.append(set(np.where(temp)[0]))

    plt.figure(figsize=(3, 2))
    v = venn2(sets, tuple(gp))
    v.get_patch_by_id('10').set_color(default_palette[7])
    v.get_patch_by_id('01').set_color(default_palette[6])
    v.get_patch_by_id('11').set_color(default_palette[2])
    c = venn2_circles(sets, linestyle='solid')
    [cl.set_lw(1) for cl in c]
    plt.savefig(os.path.join('figures', title + '_gp_1'), **savefig_args)

    gp = grps[1]
    sets = []
    for cnc in gp:
        cancer_sel = df['cancer_type'] == cnc
        temp = np.array(df['is_signif'][cancer_sel])
        sets.append(set(np.where(temp)[0]))

    labels = venn.get_labels(sets)
    fig, ax = venn.venn4(labels, figsize=(6, 6), names=gp, colors=
                         [(default_palette[i][0],
                           default_palette[i][1],
                           default_palette[i][2],
                           0.3)
                          for i in [3, 5, 7, 8]])
    plt.savefig(os.path.join('figures', title + '_gp_2'), **savefig_args)
コード例 #8
0
ファイル: vdoc.py プロジェクト: TheChymera/consciplot
def vdoc_plot(overlap):
	plt.figure(figsize=(13,13), facecolor="white")
	#syntax: set1, set2, set1x2...
	subset_tuple=(5,2,overlap)
	v = venn2(subsets=subset_tuple, set_labels = ('A', 'B', 'C'))

	v.get_patch_by_id('100').set_alpha(0.1)
	v.get_patch_by_id('100').set_color('gray')
	if overlap != 0:
		v.get_patch_by_id('110').set_color('green')
		v.get_patch_by_id('110').set_alpha(0.7)
		v.get_label_by_id('110').set_text('Consciousnes')
	v.get_patch_by_id('010').set_alpha(0.4)
	v.get_label_by_id('100').set_text('Set of all qualia')
	v.get_label_by_id('010').set_text('Set of all concurrent\n mental processes')
	v.get_label_by_id('A').set_text('')
	v.get_label_by_id('B').set_text('')

	c = venn2_circles(subsets=subset_tuple)
	c[0].set_ls('dotted')
	c[1].set_ls('dashed')
	plt.title("Venn Diagram of Consciousnes")

	from matplotlib.transforms import Affine2D
	ax = plt.gca()
	center = [np.mean(ax.get_xlim()), np.mean(ax.get_ylim())]
	t = Affine2D().rotate_deg_around(center[0], center[1], 90) + ax.transData
	for v in ax.patches + ax.texts:
		v.set_transform(t)
	yl = ax.get_ylim()
	plt.ylim(yl[0]-0.2, yl[1]+0.2)

	plt.show()
コード例 #9
0
def SimpleMatplotVenn(names, data, outputDir=False, display=True):
    """ Uses http://pypi.python.org/pypi/matplotlib-venn (code combined into one module) to export
    simple or complex, overlapp weighted venn diagrams as an alternative to the default methods in
    this module """

    import numpy as np
    pylab.figure(figsize=(11, 7), facecolor='w')

    vd = get_labels(data, fill="number")
    set_labels = []
    for i in names:
        set_labels.append(string.replace(i, '.txt', ''))

    if len(set_labels) == 2:
        from matplotlib_venn import venn2, venn2_circles
        set_colors = ('r', 'g')
        subsets = (vd['10'], vd['01'], vd['11'])
        v = venn2(subsets=subsets,
                  set_labels=set_labels,
                  set_colors=set_colors)
        c = venn2_circles(subsets=subsets,
                          alpha=0.5,
                          linewidth=1.5,
                          linestyle='dashed')

    if len(set_labels) == 3:
        from matplotlib_venn import venn3, venn3_circles
        set_colors = ('r', 'g', 'b')
        subsets = (vd['100'], vd['010'], vd['110'], vd['001'], vd['101'],
                   vd['011'], vd['111'])
        v = venn3(subsets=subsets,
                  set_labels=set_labels,
                  set_colors=set_colors)
        c = venn3_circles(subsets=subsets,
                          alpha=0.5,
                          linewidth=1.5,
                          linestyle='dashed')

    pylab.title("Overlap Weighted Venn Diagram", fontsize=24)

    try:
        if outputDir != False:
            filename = outputDir + '/%s.pdf' % venn_export_weighted
            pylab.savefig(filename)
            filename = outputDir + '/%s.png' % venn_export_weighted
            pylab.savefig(filename, dpi=100)  #,dpi=200
    except Exception:
        print 'Image file not saved...'

    if display:
        pylab.show()

    try:
        import gc
        fig.clf()
        pylab.close()
        gc.collect()
    except Exception:
        pass
コード例 #10
0
def plot_venn_diagram(data, ax=None, fontsize=25, alpha=0.6, x_loc=0.01, y_loc=-0.1):
    """Plot a Venn diagram of the three samples of galaxies."""
    # Making the plot
    if ax is None:
        fig = plt.figure(figsize=(9, 6))
        fig.subplots_adjust(
            left=0.01, right=0.99, bottom=0.01, top=0.99, wspace=0, hspace=0)
        ax = fig.add_subplot(111)
        use_ax = False
    else:
        use_ax = True

    set_1 = data['sample_1']['set']
    set_2 = data['sample_2']['set']
    if data['sample_3'] is None:
        set_list = [set_1, set_2]
        set_3 = None
        name_list = (
            data['sample_1']['name'], data['sample_2']['name'])
        color_list = (
            data['sample_1']['color'], data['sample_2']['color'])
    else:
        set_3 = data['sample_3']['set']
        set_list = [set_1, set_2, set_3]
        name_list = (
            data['sample_1']['name'], data['sample_2']['name'], data['sample_3']['name'])
        color_list = (
            data['sample_1']['color'], data['sample_2']['color'], data['sample_3']['color'])

    if set_3 is not None:
        vd = venn3(
            set_list, set_labels=name_list, set_colors=color_list, alpha=alpha, ax=ax)
        vdc = venn3_circles(set_list, linestyle='-', linewidth=3, color='grey', ax=ax)
    else:
        vd = venn2(
            set_list, set_labels=name_list, set_colors=color_list, alpha=alpha, ax=ax)
        vdc = venn2_circles(set_list, linestyle='-', linewidth=3, color='grey', ax=ax)

    vdc[1].set_ls("-.")
    if set_3 is not None:
        vdc[2].set_ls(":")

    for text in vd.set_labels:
        text.set_fontsize(fontsize)
    for text in vd.subset_labels:
        text.set_fontsize(fontsize)

    if set_3 is not None:
        _ = ax.text(
            x_loc, y_loc, r'${:3.1f} < z < {:3.1f}$'.format(data['z_low'], data['z_upp']),
            transform=ax.transAxes, fontsize=fontsize)
        _ = ax.text(
            x_loc, y_loc + 0.11,
            r'$\rm Top\ [{:d}:{:d}]$'.format(data['index_low'], data['index_upp']),
            transform=ax.transAxes, fontsize=fontsize)

    if use_ax:
        return ax
    return fig
コード例 #11
0
def build_venn(df, sample_base, variant_type):
    """
    Create overlapping sets from cosmic or gene variants to build Venn Diagrams
    
    Arguments:
    df - a cosmic or gene dataframe storing specific variants across passages
    sample_base - the patient id the PDX models were derived from
    variant_type - which variant class to subset ('gene' or 'cosmic')
    
    Output:
    Matplotlib axes to build a venn diagram
    """

    if variant_type == 'gene':
        subset_variant = 'Gene.refGene'
    elif variant_type == 'cosmic':
        subset_variant = 'cosmic70'

    # Build Venn Diagram for cosmic variants
    f0 = '{}-F0'.format(sample_base)
    f5 = '{}-F5'.format(sample_base)
    prim = '{}-primary'.format(sample_base)

    # Get sets of variants matching specific passages
    set_f0 = set(df.query('sample_name == @f0')[subset_variant])
    set_f5 = set(df.query('sample_name == @f5')[subset_variant])
    set_prim = set(df.query('sample_name == @prim')[subset_variant])

    # Build venn diagram
    if len(set_prim) == 0:
        v = venn2(subsets=(set_f0, set_f5), set_labels=(f0, f5))
        v.get_patch_by_id('11').set_color('#fdff5b')
        v.get_patch_by_id('10').set_color('#b8ff87')
        v.get_patch_by_id('01').set_color('#82fffc')
        c = venn2_circles(subsets=(set_f0, set_f5), linestyle='dashed')
    else:
        v = venn3(subsets=(set_f0, set_f5, set_prim),
                  set_labels=(f0, f5, prim))
        v.get_patch_by_id('110').set_color('#fdff5b')
        v.get_patch_by_id('100').set_color('#b8ff87')
        v.get_patch_by_id('010').set_color('#82fffc')
        v.get_patch_by_id('001').set_color('#ff82cf')
        v.get_patch_by_id('101').set_color('#ffb05b')
        v.get_patch_by_id('011').set_color('#992dff')
        v.get_patch_by_id('111').set_color('#6872ff')
        c = venn3_circles(subsets=(set_f0, set_f5, set_prim),
                          linestyle='dashed')

    # Obtain axes and show plot
    plt.title('{} {}'.format(sample_base, variant_type))
    fig = plt.gcf()
    venn_fig = os.path.join('figures', 'venns',
                            'venn_{}_{}.pdf'.format(sample_base, variant_type))
    plt.tight_layout()
    plt.savefig(venn_fig)
    plt.show()
    return fig
コード例 #12
0
ファイル: module_venn.py プロジェクト: chengyanyu/SECIMTools
def plotVenn2(data, title, name1, name2, innerLabels=None, circles=None):
    """ 
    Plots venn diagram for 2 sets (2 circles).

    :Arguments:

        :type data: list
        :param data: list of values for venn circles [1,2,3] = [Ab,AB,aB]
        
        :type title: str
        :param title: Title for the plot
        
        :type name1: str
        :param name1: Name of the first category (circle)
        
        :type name2: str
        :param name2: Name of the second category (circle)
        
        :type innerLabels: list
        :param innerLabels: List of labels for the inside of circles.
        
        :type circles: boolean
        :param circles: If true draws the edge of the circles


    :Returns:
        :rtype figInstance: figureHandler object
        :returns figInstance: Outputs a figureHandler object with the plot.

    """

    #Get figure instances
    figInstance = figureHandler(proj="2d")

    #Setting format of the figure
    figInstance.formatAxis(xTitle=name1, yTitle=name2, axTitle=title)

    #Plotting venn
    venn2fig = venn2(subsets=data,
                     set_labels=(name1, name2),
                     ax=figInstance.ax[0])

    #Plot circles
    if circles:
        circles = venn2_circles(subsets=data,
                                linestyle='dotted',
                                ax=figInstance.ax[0])

    # If not inner labels are provided use the data as a string
    if innerLabels is None:
        innerLabels = list(map(str, data))

    #Art of the venn diagram
    _artVenn2(venn2fig, innerLabels=innerLabels)

    #Return Plot
    return figInstance
コード例 #13
0
 def venn_digram(self, names, figname):
     import matplotlib_venn
     from matplotlib_venn import venn3, venn3_circles, venn2, venn2_circles
     plt.figure(figsize=(4, 4))
     if len(names) == 2:
         set1 = set(self['venn'][names[0]])
         set2 = set(self['venn'][names[1]])
         venn2([set1, set2], (names[0], names[1]))
         venn2_circles([set1, set2])
     if len(names) == 3:
         set1 = set(self['venn'][names[0]])
         set2 = set(self['venn'][names[1]])
         set3 = set(self['venn'][names[2]])
         venn3([set1, set2, set3], (names[0], names[1], names[2]))
         venn3_circles([set1, set2, set3])
     plt.savefig('f.png.' + figname + '.png')
     plt.savefig('f.eps.' + figname + '.eps')
     plt.clf()
コード例 #14
0
ファイル: plot.py プロジェクト: Fermibyte/chrome_chip
def plot_venn2_set(dict_of_sets, overlap_name, folder):
    '''
    Plots a 2 way venn from a dictionary of sets
    Saves to file.

    Inputs
    ------
    dict_of_sets: dictionary of sets to overlap
    overlap_name: string with name of overlap
    folder: output folder

    Returns
    -------
    None

    '''
    folder = make_folder(f"{val_folder(folder)}venn_plot")

    plt.clf()
    plt.figure(figsize=(7, 7))

    font = {
        'family': 'sans-serif',
        'weight': 'normal',
        'size': 16,
    }

    plt.rc('font', **font)

    set_list = []
    set_names = []
    for name, setlist in dict_of_sets.items():
        set_list.append(setlist)
        set_names.append(name.replace('_', ' '))

    # make venn
    venn_plot = venn2(subsets=set_list, set_labels=set_names)
    patch = ['10', '01', '11']
    for p in patch:
        if venn_plot.get_patch_by_id(p):
            venn_plot.get_patch_by_id(p).set_color('none')
            venn_plot.get_patch_by_id(p).set_alpha(.4)
            venn_plot.get_patch_by_id(p).set_edgecolor('none')

    c = venn2_circles(subsets=set_list)
    colors = ['green', 'blue']
    for circle, color in zip(c, colors):
        circle.set_edgecolor(color)
        circle.set_alpha(0.8)
        circle.set_linewidth(2)

    plt.title(f"{overlap_name.replace('_', ' ')} overlaps")
    plt.tight_layout()
    plt.savefig(f'{folder}{overlap_name.replace(" ", "_")}-overlap.svg')
    plt.savefig(f'{folder}{overlap_name.replace(" ", "_")}-overlap.png',
                dpi=300)
コード例 #15
0
def make_venn(sample_cos_produced,
              measured_cos=None,
              output_loc=None,
              name1='gene_set_1',
              name2='gene_set_2'):
    samples = list(sample_cos_produced.keys())
    bac_cos = sample_cos_produced[samples[0]]
    if len(samples) == 2:
        host_cos = sample_cos_produced[samples[1]]
    else:
        host_cos = None
    if host_cos is None and measured_cos is None:
        raise ValueError(
            "Must give host_cos or measured_cos to make venn diagram")
    if host_cos is not None and measured_cos is None:
        _ = venn2(
            (set(bac_cos), set(host_cos)),
            ("Compounds predicted\nproduced by %s" % name1.replace('_', ' '),
             "Compounds predicted\nproduced by %s" % name2.replace('_', ' ')),
            set_colors=('white', ) * 2)
        _ = venn2_circles((set(bac_cos), set(host_cos)), linestyle='solid')
    elif host_cos is None and measured_cos is not None:
        _ = venn2(
            (set(bac_cos), set(measured_cos)),
            ("Compounds predicted\nproduced by %s" % name1.replace('_', ' '),
             "Compounds measured"),
            set_colors=('white', ) * 2)
        _ = venn2_circles((set(bac_cos), set(measured_cos)), linestyle='solid')
    else:
        _ = venn3(
            (set(measured_cos), set(bac_cos), set(host_cos)),
            ("Compounds measured",
             "Compounds predicted\nproduced by %s" % name1.replace('_', ' '),
             "Compounds predicted\nproduced by %s" % name2.replace('_', ' ')),
            set_colors=('white', ) * 3)
        _ = venn3_circles((set(measured_cos), set(bac_cos), set(host_cos)),
                          linestyle='solid')
    if output_loc is not None:
        plt.savefig(output_loc, bbox_inches='tight', dpi=300)
    else:
        plt.show()
コード例 #16
0
def venn(A,B):
  #A = FiniteSet(*A) # Convierto el conjunto al objeto de sympy para graficar
  #B = FiniteSet(*B) # Convierto el conjunto al objeto de sympy para graficar
  print(A)
  plt.figure(figsize = (6,8)) # Creo la figura
  v = venn2(subsets = [A,B],set_labels = ('A','B')) # Creo los dos conjuntos
  v.get_label_by_id('10').set_text(A - B)
  v.get_label_by_id('11').set_text(A.intersection(B))
  v.get_label_by_id('01').set_text(B - A)
  c = venn2_circles(subsets = [A,B],linestyle = 'dashed')
  c[0].set_ls('solid')
  plt.show()
コード例 #17
0
ファイル: mut_exclusive.py プロジェクト: shinokada/vennfig
def mut_exclusive(size=15,
                  fill_color='skyblue',
                  bg_color='white',
                  font_size=20,
                  title='Mutually exclusive: A∩B=∅',
                  set_a='A',
                  set_b='B',
                  text_size=15):
    """
    Mutually exclusive Venn diagram

    parameters
    ----------

    size: Set the figure size. The default value is 15.
    fill_color: Set the filling color. The default value is 'skyblue'.
    bg_color: Set the background color. The default value is 'white'.
    font_size: Set the title font size. The default value is 20.
    title: Set the title. The default value is 'Mutually exclusive: A∩B=∅'
    set_a: Set the set name for the left diagram. The default value is 'A'.
    set_b: Set the set name for the left diagram. The default value is 'B'.
    text_size: Set the text size. The default value is 15.

    example
    -------
    mut_exclusive()
    mut_exclusive(size=10, fill_color='#2d5c91', bg_color='#e1e8f0', font_size=25, 
        title='Mutually exclusive: P∩Q=∅', set_a='P', set_b='Q')

    """

    figure, ax = plt.subplots(1, 1, figsize=(size, size))

    ax.set_title(title, fontsize=font_size)

    v = venn2(subsets=(3, 3, 0), set_labels=(set_a, set_b))
    c = venn2_circles(subsets=(3, 3, 0))
    ax.set_axis_on()
    ax.set_facecolor(bg_color)
    ymin, ymax = ax.get_ylim()
    ax.set_ylim(ymin - 0.1, ymax)

    for area in ['01', '10', '11']:
        if area != '11':
            v.get_patch_by_id(area).set_color(fill_color)
            v.get_patch_by_id(area).set_alpha(1)
        txt = v.get_label_by_id(area)
        if txt:
            txt.set_text('')

    plt.rc('font', size=text_size)
    plt.show()
コード例 #18
0
 def __init__(self, set_labels=[]):
     self.figure = PP.figure()
     super().__init__(self.figure)
     if len(set_labels) == 2:
         self.ids = ["10", "01", "11"]
         self.venn = V.venn2(subsets=(1, 1, 1),
                             set_labels=set_labels,
                             subset_label_formatter=lambda x: "",
                             set_colors=['white', 'white', 'white'])
         V.venn2_circles(subsets=(1, 1, 1))
     elif len(set_labels) == 3:
         self.ids = ["100", "010", "001", "110", "101", "011", "111"]
         self.venn = V.venn3(subsets=(1, 1, 1, 1, 1, 1, 1),
                             set_labels=set_labels,
                             subset_label_formatter=lambda x: "",
                             set_colors=[
                                 'white', 'white', 'white', 'white',
                                 'white', 'white', 'white'
                             ])
         V.venn3_circles(subsets=(1, 1, 1, 1, 1, 1, 1))
     else:
         raise ValueError()
コード例 #19
0
def plot_venn_two(
    sizes: List[int],
    labels: List[str],
    figpath: str = 'venn_two.pdf',
    title: str = '',
    **kwargs,
) -> None:
    """Plot a single Venn Diagram with two terms.

    Args:
        sizes (List[int]): List of ints of length 3. First two elements correspond to
            the labels, third one to the intersection.
        labels ([type]): List of str of length 2, containing names of circles.
        figpath (str): Name under which figure is saved. Defaults to 'venn_two.pdf', i.e. it is
            inferred from labels.
        title (str): Title of the plot. Defaults to '', i.e. it is inferred from
            labels.
        **kwargs: Additional keyword arguments for venn2.
    """
    assert len(sizes) == 3, 'Incorrect type/length of sizes'
    assert len(labels) == 2, 'Incorrect type/length of labels'

    title = get_name(labels) if title == '' else title
    figname = title.lower().replace(' vs. ', '_') if figpath == '' else figpath
    venn2(subsets=sizes, set_labels=labels, alpha=0.6, **kwargs)
    venn2_circles(subsets=sizes,
                  linestyle='solid',
                  linewidth=0.6,
                  color='grey',
                  **kwargs)
    if kwargs.get('ax', False):
        print(kwargs, type(kwargs))
        print(kwargs['ax'])
        kwargs['ax'].set_title(title, fontdict={'fontweight': 'bold'}, size=15)
    else:
        plt.title(title, fontdict={'fontweight': 'bold'}, size=15)
        plt.savefig(f'{figname}.pdf')
コード例 #20
0
def venn2_plot(set1, set2, label1, label2, size_label, size_num):
    v = venn2([set1, set2], ([label1, label2]))
    c = venn2_circles(subsets=[set1, set2],
                      linestyle='dashed',
                      linewidth=2,
                      color="k")
    v.get_patch_by_id('11').set_color('w')
    v.get_patch_by_id('11').set_alpha(1)
    v.get_label_by_id('11').set_color('k')
    v.get_label_by_id('11').set_fontweight('bold')
    for text in v.set_labels:
        text.set_fontsize(size_label)
        text.set_fontweight('bold')
    for text in v.subset_labels:
        text.set_fontsize(size_num)
コード例 #21
0
ファイル: operations.py プロジェクト: afgalvan/Vennom
def two_sets_process(user_input: str, sets: dict) -> None:
    """Manage all the methods and functions to make operations with two
    sets to show the graphic result."""

    plt.title(user_input)
    set_names = list(sets.keys())
    set_names.sort()
    set_zones = {}
    set_zones[set_names[0]] = {"100", "110"}
    set_zones[set_names[1]] = {"110", "010"}

    user_input = user_input.replace("(", "")
    user_input = user_input.replace(" ", "")
    divided_equation = user_input.split(")")

    elements = findall("[ABCU\∩\-'\Δ]+?", user_input)
    elements_chunk = len(elements)
    for i in elements:
        if i in "ABC":
            set_result = set_zones[i]
            break
    for i in range(elements_chunk):
        if elements[i] in "ABC" and i + 1 < elements_chunk:
            if elements[i + 1] == "-":
                set_result = set_result - set_zones[elements[i + 2]]
            elif elements[i + 1] == "U":
                set_result = set_result.union(set_zones[elements[i + 2]])
            elif elements[i + 1] == "∩":
                set_result = set_result.intersection(set_zones[elements[i +
                                                                        2]])
            elif elements[i + 1] == "Δ":
                set_result = set_result.symmetric_difference(
                    set_zones[elements[i + 2]])

    v = venn2(subsets=(1, 1, 1), set_labels=(set_names[0], set_names[1]))
    for i in zones2:
        v.get_patch_by_id(i).set_color("white")
        v.get_label_by_id(i).set_text("")

    c = venn2_circles(subsets=(1, 1, 1))
    for i in range(len(c)):
        c[i].set_lw(1.0)
        c[i].set_ls("solid")

    for i in set_result:
        v.get_patch_by_id(i).set_color("red")

    plt.show()
コード例 #22
0
ファイル: VennDiagram.py プロジェクト: venkatmi/altanalyze
def SimpleMatplotVenn(names,data,outputDir=False,display=True):
    """ Uses http://pypi.python.org/pypi/matplotlib-venn (code combined into one module) to export
    simple or complex, overlapp weighted venn diagrams as an alternative to the default methods in
    this module """

    import numpy as np
    pylab.figure(figsize=(11,7),facecolor='w')
    
    vd = get_labels(data, fill="number")
    set_labels=[]
    for i in names:
        set_labels.append(string.replace(i,'.txt',''))
        
    if len(set_labels)==2:
        from matplotlib_venn import venn2, venn2_circles
        set_colors = ('r', 'g')
        subsets = (vd['10'], vd['01'], vd['11'])
        v = venn2(subsets=subsets, set_labels = set_labels, set_colors=set_colors)
        c = venn2_circles(subsets=subsets, alpha=0.5, linewidth=1.5, linestyle='dashed')
        
    if len(set_labels)==3:
        from matplotlib_venn import venn3, venn3_circles
        set_colors = ('r', 'g', 'b')
        subsets = (vd['100'], vd['010'], vd['110'], vd['001'], vd['101'], vd['011'], vd['111'])
        v = venn3(subsets=subsets, set_labels = set_labels,set_colors=set_colors)
        c = venn3_circles(subsets=subsets, alpha=0.5, linewidth=1.5, linestyle='dashed')
        
    pylab.title("Overlap Weighted Venn Diagram",fontsize=24)

    try:
        if outputDir!=False:
            filename = outputDir+'/%s.pdf' % venn_export_weighted
            pylab.savefig(filename)
            filename = outputDir+'/%s.png' % venn_export_weighted
            pylab.savefig(filename, dpi=100) #,dpi=200
    except Exception:
        print 'Image file not saved...'
        
    if display:
        pylab.show()

    try:
        import gc
        fig.clf()
        pylab.close()
        gc.collect()
    except Exception:
        pass
コード例 #23
0
def two_way_venn(bedfiles, names, colors):
    Site1 = pybedtools.BedTool(bedfiles[0])
    Site2 = pybedtools.BedTool(bedfiles[1])
    Int = Site1.intersect(Site2, wa=True)

    Sets = (len(Site1) - len(Int), len(Site2) - len(Int), len(Int))

    fig = plt.figure(figsize=(5, 5))
    v = venn2(subsets=Sets, set_labels=names)
    v.get_patch_by_id('10').set_color(colors[0])
    v.get_patch_by_id('01').set_color(colors[1])
    v.get_patch_by_id('11').set_color(colors[2])

    c = venn2_circles(subsets=Sets, linestyle='solid')

    return fig
コード例 #24
0
def scaledVenn(input_filename, sets_list, sets_names, title_for_venn,
               venn_output_file):
    sets_list_length = len(sets_list)
    venn_diag = ""
    plt.figure(figsize=(8, 8))
    if sets_list_length == 2:
        venn_diag = venn2(subsets=sets_list,
                          set_labels=(sets_names),
                          set_colors=('lightgray', 'dimgray'))
        c = venn2_circles(sets_list, linewidth=3, color="black")
        lblA = venn_diag.get_label_by_id("A")
        xA, yA = lblA.get_position()
        lblA.set_position((xA - 0.25, yA + 0.1))
        lblB = venn_diag.get_label_by_id("B")
        xB, yB = lblB.get_position()
        lblB.set_position((xB + 0.25, yB + 0.1))
    elif sets_list_length == 3:
        venn_diag = venn3(subsets=sets_list,
                          set_labels=(sets_names),
                          set_colors=('blueviolet', 'darkturquoise', 'tomato'))
        c = venn3_circles(sets_list, linewidth=3, color="black")
        lblA = venn_diag.get_label_by_id('A')
        xA, yA = lblA.get_position()
        lblA.set_position((xA - 0.1, yA - 0.1))
        lblB = venn_diag.get_label_by_id("B")
        xB, yB = lblB.get_position()
        lblB.set_position((xB - 0.25, yB + 0.05))
        lblC = venn_diag.get_label_by_id("C")
        xC, yC = lblC.get_position()
        lblC.set_position((xC - 0.25, yC))
    for text in venn_diag.set_labels:
        text.set_fontsize(18)
        text.set_family('arial')
        text.set_weight('bold')
    for text in venn_diag.subset_labels:
        if text is not None:
            text.set_fontsize(18)
            text.set_family('arial')
            text.set_weight('bold')

    plt.setp(plt.gca().spines.values(), linewidth=3)
    plt.gca().set_axis_on()
    plt.title(title_for_venn, fontsize=30, fontname='arial', weight='bold')

    plt.savefig(venn_output_file)
    plt.close()
    return ("done")
def plot_venn_2(drug1_name, drug2_name, items_drug1, items_drug2, shared_items,
                output_plot):
    """
    Plot a venn diagram of 2 variables
    """
    import matplotlib.pyplot as plt
    from matplotlib_venn import venn2, venn2_circles

    # Create a figure of size 8x6 inches, 80 dots per inch
    fig = plt.figure(figsize=(8, 8), dpi=100)

    # Create a new subplot from a grid of 2x1 --> bar plot for the lost PDIs
    ax = fig.add_subplot(111)
    # s will contain the subset sizes #
    s = (len(items_drug1) - len(shared_items),
         len(items_drug2) - len(shared_items), len(shared_items))

    v = venn2(subsets=s, set_labels=(drug1_name, drug2_name))

    # Subset labels
    v.get_label_by_id('10').set_text(len(items_drug1) - len(shared_items))
    v.get_label_by_id('01').set_text(len(items_drug2) - len(shared_items))
    if len(shared_items) > 0:
        v.get_label_by_id('11').set_text(len(shared_items))

    # Subset fontsize
    for text in v.set_labels:
        if text:
            text.set_fontsize(22)
    for text in v.subset_labels:
        if text:
            text.set_fontsize(22)

    # Subset colors
    v.get_patch_by_id('10').set_color('c')
    v.get_patch_by_id('10').set_alpha(1.0)
    v.get_patch_by_id('01').set_color('#993333')
    v.get_patch_by_id('01').set_alpha(0.6)

    # Border styles
    c = venn2_circles(subsets=s, linestyle='solid')

    #plt.title("Consistence between different methods", fontsize=22)

    fig.savefig(output_plot, bbox_inches='tight')

    return
コード例 #26
0
def plot_venn():
    fig = plt.figure()
    plt.clf()
    fig.set_size_inches(6, 5)

    v = venn2(subsets=(5, 6, 7), set_labels=('', ''))
    v.get_label_by_id('10').set_text('False\nPositives')
    v.get_label_by_id('01').set_text('False\nNegatives')
    v.get_label_by_id('11').set_text('True\nPositives')
    c = venn2_circles(subsets=(5, 6, 7), linestyle='dashed')
    c[0].set_lw(1.0)
    c[0].set_ls('dotted')

    plt.annotate('True Negatives', xy=np.array([0, 0]),
                 xytext=(0, -140),
                 ha='center', textcoords='offset points')
    _save_figure('tf_np_venn.png')
コード例 #27
0
def plot_venn(search_one, search_two, output_location):
    """
    search_one and search_two should both be dictionaries, mapping each scan to the peptide
    """
    spectra_one = set(search_one.keys())
    print('spectra one:')
    print(spectra_one)
    spectra_two = set(search_two.keys())
    common_spectra = spectra_one.intersection(spectra_two)
    print('common spectra')
    print(common_spectra)
    #the number of spectra shared between the two searches that match against different peptides
    discordant_spectra = 0
    #the number of spectra shared between the two searches that match against the same peptide 
    concordant_spectra = 0
    for spectra in common_spectra:
        if search_one[spectra] == search_two[spectra]:
            concordant_spectra += 1
        else:
            discordant_spectra += 1
    
    circles = venn2_circles([spectra_one, spectra_two])
    sorted_circles = sorted(circles, key=lambda x: x.center[0])
    bigger_circle = max(circles, key=lambda x: x.radius)
    bigger_radius = bigger_circle.radius
    left_point = np.array([sorted_circles[0].center[0] - sorted_circles[0].radius, sorted_circles[0].center[1]])
    right_point = np.array([sorted_circles[1].center[0] + sorted_circles[1].radius, sorted_circles[1].center[1]])
    left_intersection = max(_math.circle_line_intersection(sorted_circles[0].center, sorted_circles[0].radius, left_point, right_point), key=lambda x: x[0])
    right_intersection = min(_math.circle_line_intersection(sorted_circles[1].center, sorted_circles[1].radius, left_point, right_point), key=lambda x: x[0])
    line = ConnectionPatch(left_intersection, right_intersection, 'data', 'data')
    plt.gca().add_patch(line)
    print(sorted_circles[0].center)
    print(sorted_circles[1].center)
    circle_intersections = _math.circle_circle_intersection(sorted_circles[0].center, sorted_circles[0].radius, sorted_circles[1].center, sorted_circles[1].radius)
    upper_circle_intersection = max(circle_intersections, key=lambda x: x[1])
    #take the centroid
    upper_text_location = (left_intersection + right_intersection + upper_circle_intersection)/3.0
    #plt.rc('text', usetex=True)
    plt.text(upper_text_location[0], upper_text_location[1], str(concordant_spectra) + '\n' + r'$p_i = p_j$')
    lower_circle_intersection = min(circle_intersections, key=lambda x: x[1])
    lower_text_location = (left_intersection + right_intersection + lower_circle_intersection)/3.0
    plt.text(lower_text_location[0], lower_text_location[1], str(discordant_spectra) + '\n' + r'$p_i \neq p_j$')
    venn_diagram = venn2([spectra_one, spectra_two], ['Unfiltered', 'Filtered'])
    venn_diagram.get_label_by_id('11').set_text('')
    matplotlib.pyplot.savefig(output_location, format='png')
コード例 #28
0
ファイル: plot.py プロジェクト: Fermibyte/chrome_chip
def plot_venn2(Series, overlap_name, folder):
    '''
    Series with with overlaps 10,01,11
    Plots a 2 way venn.
    Saves to file.
    '''

    folder = make_folder(f"{val_folder(folder)}venn_plot")

    plt.clf()
    plt.figure(figsize=(7, 7))

    font = {
        'family': 'sans-serif',
        'weight': 'normal',
        'size': 16,
    }

    plt.rc('font', **font)

    # make venn
    venn_plot = venn2(
        subsets=(Series.iloc[0], Series.iloc[1], Series.iloc[2]),
        set_labels=[name.replace('_', ' ') for name in Series.index.tolist()])
    patch = ['10', '01', '11']
    for p in patch:
        if venn_plot.get_patch_by_id(p):
            venn_plot.get_patch_by_id(p).set_color('none')
            venn_plot.get_patch_by_id(p).set_alpha(.4)
            venn_plot.get_patch_by_id(p).set_edgecolor('none')

    c = venn2_circles(subsets=(Series.iloc[0], Series.iloc[1], Series.iloc[2]))
    colors = ['green', 'blue']
    for circle, color in zip(c, colors):
        circle.set_edgecolor(color)
        circle.set_alpha(0.8)
        circle.set_linewidth(2)

    plt.title(overlap_name.replace('_', ' ') + " overlaps")
    plt.tight_layout()
    plt.savefig(f'{folder}{overlap_name.replace(" ", "_")}-overlap.svg')
    plt.savefig(f'{folder}{overlap_name.replace(" ", "_")}-overlap.png',
                dpi=300)
コード例 #29
0
ファイル: subsets.py プロジェクト: shinokada/vennfig
def subsets(size=15, fill_color='skyblue', bg_color='white', font_size=20,
            title='Subsets', set_a='A', set_b='B', text_size=15):
    """
    Subsets Venn diagram

    parameters
    ---------- 

    size: Set the figure size. The default value is 15.
    fill_color: Set the filling color. The default value is 'skyblue'.
    bg_color: Set the background color. The default value is 'white'.
    font_size: Set the title font size. The default value is 20.
    title: Set the title. The default value is 'Subsets'.
    set_a: Set the set name for the left diagram. The default value is 'A'.
    set_b: Set the set name for the left diagram. The default value is 'B'.
    text_size: Set the text size. The default value is 15.

    example
    -------
    subsets()
    subsets(size=5, fill_color='#f5b705', bg_color='#f7edd0', font_size=20,
        title='Subsets of P', set_a='P', set_b='Q')

    """

    v = venn2(subsets=(5, 0, 2), set_labels=(set_a, set_b))
    c = venn2_circles(subsets=(5, 0, 2))

    for area in ['01', '10', '11']:
        v.get_patch_by_id(area).set_color(fill_color)
        v.get_patch_by_id(area).set_alpha(1)
        txt = v.get_label_by_id(area)
        if txt:
            txt.set_text('')

    plt.text(-0.6, 0.5, r'U', fontsize=font_size)
    plt.gca().set_axis_on()
    plt.gca().set_facecolor(bg_color)
    plt.title(title, fontsize=font_size)
    ymin, ymax = plt.gca().get_ylim()
    plt.ylim(ymin - 0.1, ymax)
    plt.rc('font', size=text_size)
    plt.show()
コード例 #30
0
def graficar_union(conj1, conj2, etiqueta1="A", etiqueta2="B"):
    """
  Permite graficar la unión de ambos conjuntos y muestra los datos de la operación

  Parámetros:

  conj1-tipo Set : Es el primer conjunto para la operación. Este conjunto ya ha sido formateado para su uso.
  conj2-tipo Set : Es el segundo conjunto para la opeación. Este conjunto ya ha sido formateado para su uso.
  etiqueta1-tipo String: Es la etiqueta para el primer conjunto. Por defecto se etiqueta como 'A'
  etiqueta2-tipo String: Es la etiqueta para el segundo conjunto. Por defecto se etiqueta como 'B'
  """
    A = conj1  # Convierto el conjunto al objeto de sympy para graficar
    B = conj2  # Convierto el conjunto al objeto de sympy para graficar
    carA = cardinalidad(A)
    carB = cardinalidad(B)
    operacion = etiqueta1 + " U " + etiqueta2
    resultado = union(A, B)
    lista = resultado  #sirve para crear el diagrama y adaptarlo en caso de que el resultado sea vacio
    elementos = resultado  #sirve para mostrar los elementos resultabtes de la operacion y adaptarla en caso que sea vacío
    if cardinalidad(resultado) == 0:
        elementos = chr(216)
        lista = {1, 2, 3, 4, 5, 6, 7}

    plt.figure(figsize=(6, 8),
               linewidth=10,
               edgecolor="black",
               facecolor="white")  # Creo la figura
    v = venn2(subsets=[lista, lista],
              set_labels=(operacion, ''))  # Creo los dos conjuntos
    c = venn2_circles(subsets=[lista, lista], linestyle='dashed')
    v.get_label_by_id('11').set_text(elementos)
    v.get_label_by_id('01').set_visible(False)
    v.get_label_by_id('10').set_visible(False)

    #v.get_label_by_id('A').set_color('white')
    # v.get_patch_by_id('11').set_color('green')
    # v.get_patch_by_id('10').set_color('green')
    # v.get_patch_by_id('01').set_color('green')
    # v.get_label_by_id('10').set_visible(False)
    #v.get_label_by_id('01').set_visible(False)

    tablaResultados(A, B, operacion, resultado, etiqueta1, etiqueta2)
    plt.show()
コード例 #31
0
def draw_venn2(A, B, set_labels=['A', 'B'], filename=None):
    """
    Draw a Venn diagram for sets A and B
    """
    sets = [A, B]

    diagram = matplotlib_venn.venn2(sets, set_labels=set_labels)
    _ = matplotlib_venn.venn2_circles(sets, linestyle='solid', linewidth=1)

    # A, B, AB
    members = [A.difference(B), B.difference(A), A.intersection(B)]

    for v, curr_members in zip(diagram.subset_labels, members):
        if v is not None:
            v.set_text(str('\n'.join(curr_members)))

    if filename is not None:
        plt.savefig(filename, format='png', bbox_inches='tight')
    else:
        plt.show()
コード例 #32
0
ファイル: cyto_utils.py プロジェクト: gieses/CytAna
def venn_diagram(sets, names):
    """
    Plot a Venndiagram

    Parameters:
    -----------------------------
    sets: list of sets,
          elements that should be compared between samples

    names: tuple of str for the sets,
           elements that should be compared between samples
    """
    if len(sets) == 2:
        from matplotlib_venn import venn2, venn2_circles
        f = venn2(sets, names)
        f = venn2_circles(sets)
    elif len(sets) == 3:
        from matplotlib_venn import venn3, venn3_circles
        f = venn3(sets, names)
        f = venn3_circles(sets)
    return (f)
コード例 #33
0
ファイル: compareEventLists.py プロジェクト: stiegerb/scripts
def makeVennDiagram(file1, file2):
	try:
		from matplotlib import pyplot as plt
		from matplotlib_venn import venn2, venn2_circles
	except ImportError:
		print "Missing matplotlib_venn module, skipping venn diagram."
		return

	list1, list2 = getEventLists(file1, file2)

	set1 = set(list1)
	set2 = set(list2)

	sizes = {
		'10': len(set1)-len(set1.intersection(set2)),
		'01': len(set2)-len(set1.intersection(set2)),
		'11': len(set1.intersection(set2)),
	}

	plt.figure(figsize=(7,7))
	v = venn2(subsets=sizes, set_labels=('tHq Selection', 'ttH Selection'))

	# Cosmetics
	v.get_patch_by_id('10').set_alpha(0.2)
	v.get_patch_by_id('10').set_color('red')
	if sizes['11'] > 0:
		v.get_patch_by_id('11').set_alpha(0.5)
		v.get_patch_by_id('11').set_color('red')

	c = venn2_circles(subsets=sizes, linestyle='solid', linewidth=1.0)
	c[1].set_lw(1.0)

	# Save the pdf
	from os import path as osp
	plotfilename = "%s_%s_venn.pdf" % (osp.splitext(osp.basename(file1))[0],
		                               osp.splitext(osp.basename(file2))[0])
	plt.savefig(plotfilename, format='pdf', bbox_inches='tight')
	print ' created venn diagram in %s' % plotfilename
	print 80*'-'
コード例 #34
0
def venn_stacked():
    from matplotlib.cbook import flatten

    figure, axes = plt.subplots(len(subsets_dict), 1, figsize=(3, 30))

    # plt.show()
    for name, subset in subsets_dict.items():
        i = 0
        normalize = 0.0015

        v = venn2(subsets=subset, normalize_to=normalize, ax=axes[i])
        v.get_patch_by_id('10').set_color('orangered')
        v.get_patch_by_id("B").set_color('grey')
        v.get_label_by_id('A').set_text('')
        v.get_label_by_id('B').set_text('')
        v.get_label_by_id('11').set_text("")
        v.get_label_by_id('10').set_text("")
        v.get_label_by_id('01').set_text("")
        c = venn2_circles(subsets=subset,
                          color="black",
                          normalize_to=normalize,
                          linewidth=1.5,
                          ax=axes[i])
        i += 1
        # plt.axis('off')
        plt.show()
    data = subsets_dict.values()
    max_area = max(map(sum, data))

    def set_venn_scale(ax, true_area, reference_area=max_area):
        s = np.sqrt(float(reference_area) / true_area)
        ax.set_xlim(-s, s)
        ax.set_ylim(-s, s)

    for a, d in zip(flatten(axes), data):
        set_venn_scale(a, sum(d))

    plt.show()
コード例 #35
0
ファイル: plotting.py プロジェクト: RafaelMonteiro95/web
def plotVenn(course1,course2):
	"""plots a venn diagram with the result of a Course.compare()
	
	Args:
	    result (tuple): return of a Course.compare() call
	    filename (str): name of the resulting file
	"""

	filename = "results/" + course1.university + "-" + course1.name + '_' +  course2.university + '-' + course1.name + "_venn.png"
	result = course1.compare(course2,0.2);

	s = (len(result[0]),len(result[1]),len(result[2]))
	v = venn2(subsets=s, set_labels=(result[3][0],result[3][1]), set_colors=['red','#0066cc'], alpha=1.0);

	# Subset labels
	v.get_label_by_id('10').set_text(s[0])
	v.get_label_by_id('01').set_text(s[1])
	v.get_label_by_id('11').set_text(s[2])

	# Subset colors
	v.get_patch_by_id('10').set_color('red')
	v.get_patch_by_id('11').set_color('yellow')

	# Subset alphas
	v.get_patch_by_id('10').set_alpha(1.0)#0.4
	v.get_patch_by_id('01').set_alpha(1.0)#1.0
	v.get_patch_by_id('11').set_alpha(0.7)#0.7
	
	# Border styles
	c = venn2_circles(subsets=s, linestyle='solid')

	plt.legend(v.patches, (v.set_labels[0].get_text(),v.set_labels[1].get_text()),frameon=False)
	plt.title("Número de disciplinas equivalentes e únicas de cada curso");

	plt.tight_layout();

	plt.savefig(filename)
	plt.clf();
コード例 #36
0
ファイル: draw_venn.py プロジェクト: fortuno/varmatch
v = venn2(subsets=s, set_labels=('bwa-fb', 'pt'))

# Subset labels
v.get_label_by_id('10').set_text(format(s[0], ',d'))
v.get_label_by_id('01').set_text(format(s[1], ',d'))
v.get_label_by_id('11').set_text(format(s[2], ',d'))

# Subset colors
#v.get_patch_by_id('10').set_color('red')
#v.get_patch_by_id('01').set_color('yellow')
#v.get_patch_by_id('11').set_color('blue')

# Subset alphas
#v.get_patch_by_id('10').set_alpha(0.4)
#v.get_patch_by_id('01').set_alpha(1.0)
#v.get_patch_by_id('11').set_alpha(0.7)

for text in v.set_labels:
    text.set_fontsize(32)
for text in v.subset_labels:
    text.set_fontsize(32)

# Border styles
c = venn2_circles(subsets=s, linestyle='solid', linewidth='0')
#c[0].set_ls('dashed')  # Line style
#c[0].set_lw(2.0)       # Line width

#plt.show()
plt.tight_layout()
plt.savefig('./test_venn.png')
コード例 #37
0
import brewer2mpl
bmap = brewer2mpl.get_map('Set1', 'qualitative', 9)
mypal = bmap.mpl_colors

# plot GM12878 prediction and experiment venn diagram
plt.figure(figsize=(4.2,3.6))

v = venn2(subsets=(12,340,120),set_labels=None)
plt.setp(v.get_patch_by_id('10'), 'color', 'white')
plt.setp(v.get_patch_by_id('11'), 'color', 'white')
plt.setp(v.get_patch_by_id('01'), 'color', 'white')

value_10 = plt.getp(v.get_label_by_id('10'),'text')
plt.setp(v.get_label_by_id('10'),  'text','')

c = venn2_circles(subsets=(12,340,120))
plt.setp(c,
    'linestyle', 'dashed')
plt.setp(c[0],
    'color', mypal[0],
    'fill',False)

plt.title('GM12878')
plt.annotate(
    'Experiment', 
    xy=v.get_label_by_id('10').get_position(), 
    xytext= (-30,35),
    color=mypal[0],
    ha='center', 
    textcoords='offset points' )
plt.annotate(
コード例 #38
0
ファイル: Venn.py プロジェクト: shl198/Pipeline
from matplotlib import pyplot as plt
plt.switch_backend("Qt4Agg") 
import numpy as np
from matplotlib_venn import venn2,venn2_circles
from matplotlib_venn import venn3, venn3_circles


figure,axes=plt.subplots(3,2)
#========================= draw GS 3C9, 4B7
v1 = venn2(subsets={'01':220,'10':1268,'11':214},set_labels=('GS_VS_3C9','GS_VS_4B7'),ax=axes[0][0])
v1.get_patch_by_id('01').set_alpha(0.49)
v1.get_patch_by_id('10').set_alpha(0.49)
v1.get_patch_by_id('11').set_alpha(0.49)

c1 = venn2_circles(subsets={'01':220,'10':1268,'11':214},
                  linestyle='dashed',ax=axes[0][0])
first = c1[0]
first.set_edgecolor('red')

second = c1[1]
second.set_edgecolor('green')


#========================== draw GS 91-1C8,91-2A6
v1 = venn2(subsets={'01':1105,'10':519,'11':1646},set_labels=('GS_VS_1C8','GS_VS_2A6'),ax=axes[0][1])
v1.get_patch_by_id('01').set_alpha(0.49)
v1.get_patch_by_id('10').set_alpha(0.49)
v1.get_patch_by_id('11').set_alpha(0.49)

c1 = venn2_circles(subsets={'01':1105,'10':519,'11':1646},
                  linestyle='dashed',ax=axes[0][1])
コード例 #39
0
from matplotlib import pyplot as plt
import numpy as np
from matplotlib_venn import venn3, venn3_circles
from matplotlib_venn import venn2, venn2_circles
figure, axes = plt.subplots(2, 2)
venn2(subsets={'10': 1, '01': 1, '11': 1}, set_labels = ('A', 'B'), ax=axes[0][0])
venn2_circles((1, 2, 3), ax=axes[0][1])
venn3(subsets=(1, 1, 1, 1, 1, 1, 1), set_labels = ('A', 'B', 'C'), ax=axes[1][0])
venn3_circles({'001': 10, '100': 20, '010': 21, '110': 13, '011': 14}, ax=axes[1][1])
plt.show()
コード例 #40
0
ファイル: analysis_rhizobium.py プロジェクト: bvilhjal/nchain
def making_venn(filename = 'C:/Users/MariaIzabel/Desktop/MASTER/PHD/Syn-Non/gene_groups/gene_groups.npy'):
	gene_groups = np.load(filename).item()
	pop = parse_pop_map()
	genospecies = ['gsA', 'gsB', 'gsC', 'gsD', 'gsE']

	venn_dictionary = define_combinations(genospecies)
	total_geno = {'gsA': 0, 'gsB':0, 'gsC': 0,'gsD': 0, 'gsE': 0}
	hist_per_geno = {'gsA': {}, 'gsB':{}, 'gsC': {},'gsD': {}, 'gsE': {}}

	for gene in gene_groups:
  		strains = gene_groups[gene]
  		gs_list = sp.array([pop[str(strain)]['genospecies'] for strain in strains])
  		counts_dict = Counter(gs_list)

  	# How many genes in total are present in each genospecies?
  	gs_list = sp.unique(gs_list)
  	print gs_list
  	for i in gs_list:
  		total_geno[i] += 1

  	# How many genes contain a given amount of strains from a certain genospecies?:
  	for geno, counts in counts_dict.items():
  		tup = (geno, counts)
  		if tup[1] not in hist_per_geno[tup[0]]:
  			hist_per_geno[tup[0]][tup[1]] = 1
    	else:
    		hist_per_geno[tup[0]][tup[1]] += 1

  	# How many genes are shared by each possible combination of genospecies?:    
  	gs_list_joined = "".join(sorted(sp.unique(gs_list)))
  	venn_dictionary[gs_list_joined] += 1


	print '\nAll the possible combinations is:', venn_dictionary
	print '\nTotal amount of genes present in each genospecies', total_geno
	print '\nDistribution of genes per genospecies', hist_per_geno
	json.dump(venn_dictionary, open("text.txt",'w'))


	'''Figures'''

	### Creating histograms
	'''Total number of strains present in each genopecies'''
	strains_geno = collections.OrderedDict() 
	strains_geno = {'gsC': 116, 'gsB': 34, 'gsA': 33, 'gsE': 11, 'gsD': 5}

	'''Total number of genes present in each genospecies'''

	make_histograms(total_geno, xlab = 'Genospecies', ylab = 'Genes', save_name = 'genes_genospecies.pdf')

	make_histograms(strains_geno, xlab = 'Genospecies', ylab = 'Strains', save_name = 'strains_genospecies.pdf')

	for i in strains_geno.keys():
  		make_histograms(hist_per_geno[i], xlab= 'Strains', ylab = 'Genes', save_name = i)

	#### Creating the venn diagram

	# # # Subset sizes
	s = (
     1082,   # Abc 
     898,    # aBc 
     332,    # ABc  
     3567,   # abC
     1141,   # AbC
     1290,   # DK/FR
     5904,   # ABC 
  	)

	v = venn3(subsets=s, set_labels=('Genospecies A', 'Genospecies B', 'Genospecies C'))

	# # # Subset labels
	v.get_label_by_id('100').set_text('1082')
	v.get_label_by_id('010').set_text('898')
	v.get_label_by_id('110').set_text('332')
	v.get_label_by_id('001').set_text('3567')
	v.get_label_by_id('101').set_text('1141')
	v.get_label_by_id('011').set_text('1290')
	v.get_label_by_id('111').set_text('5904')

	# # # Subset colors
	v.get_patch_by_id('100').set_color('purple') 	
	v.get_patch_by_id('010').set_color('green')
	v.get_patch_by_id('110').set_color('orange')

	# # # Subset alphas
	v.get_patch_by_id('101').set_alpha(0.4)
	v.get_patch_by_id('011').set_alpha(1.0)
	v.get_patch_by_id('111').set_alpha(0.7)

	# # # Border styles
	c = venn3_circles(subsets=s, linestyle='solid')
	c[0].set_ls('dotted')  # Line style
	c[1].set_ls('dashed')
	c[2].set_lw(1.0)       # Line width


	plt.savefig('venn_diagram_abc.pdf')
	plt.clf()


	# # ###### Venn Diagram for Genospecies D and E
	s = (
   	3*83,  # Ab
   	3*463,  # aB
   	5904,  # AB
	)

	v = venn2(subsets=s, set_labels=('Genospecies D', 'Genospecies E'))

	# # # Subset labels
	v.get_label_by_id('10').set_text('83')
	v.get_label_by_id('01').set_text('463')
	v.get_label_by_id('11').set_text('5904')

	# # # Subset colors
	v.get_patch_by_id('10').set_color('c')
	v.get_patch_by_id('01').set_color('#993333')
	v.get_patch_by_id('11').set_color('blue')

	# # # Subset alphas
	v.get_patch_by_id('10').set_alpha(0.4)
	v.get_patch_by_id('01').set_alpha(1.0)
	v.get_patch_by_id('11').set_alpha(0.7)

	# # # Border styles
	c = venn2_circles(subsets=s, linestyle='solid')
	c[0].set_ls('dashed')  # Line style
	c[0].set_lw(2.0)       # Line width


	plt.savefig('venn_diagram_de.pdf')
	plt.clf()
コード例 #41
0
Python 3.5, using Marcia's py35 environment.
"""
from matplotlib_venn import venn2, venn2_circles
from matplotlib import pyplot as plt
from pylab import savefig
import numpy as np

#Venn for 2012 Aircraft Power Plant Patents
v=venn2(subsets=(40,31,48), set_labels = ('CPC', 'USPC'))
#Below commented lines came from matplotlib-venn example for venn3. 
#plt.figure(figsize=(4,4))
#v.get_patch_by_id('100').set_alpha(1.0)
#v.get_patch_by_id('100').set_color('white')
#v.get_label_by_id('100').set_text('Unknown')
#v.get_label_by_id('A').set_text('Set "A"')
c = venn2_circles(subsets=(40,31,48), linestyle='dashed')
#c[0].set_lw(1.0)
#c[0].set_ls('dotted')

#I have a problem with location of my annotations. Need help understanding the cooredinates???
plt.annotate('Total Patents Found\nUsing CPC = 88', xy=v.get_label_by_id('100').get_position() - np.array([0, 0.2]), xytext=(-70,-70),
             ha='center', textcoords='offset points', bbox=dict(boxstyle='round,pad=0.5', fc='gray', alpha=0.1),
             arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0.5',color='gray'))
plt.annotate('Total Patents Found\nUsing USPC = 79', xy=v.get_label_by_id('100').get_position() - np.array([-1.0, 0.2]), xytext=(70,-70),
             ha='center', textcoords='offset points', bbox=dict(boxstyle='round,pad=0.5', fc='gray', alpha=0.1),
             arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0.5',color='gray'))
plt.title("2012 Aircraft Power Plant Patent Counts\n\n\n")
plt.annotate('Precision = 54%, Recall=61%, F-Score=58%\n(Assigns USPC as the Correct Set)', xy=v.get_label_by_id('100').get_position() - np.array([-1.0, 0.2]), xytext=(-100,150),
             ha='center', textcoords='offset points', bbox=dict(boxstyle='round,pad=0.5', fc='gray', alpha=0.1))

#Savefig is not working, returns an empty file and/or cuts off title and a bit of right text box.
コード例 #42
0
ファイル: venn_sig_genes.py プロジェクト: neavemj/miscPython
# get sets of sig genes

def create_sig_set(fl):
    fl_open = open(fl)
    gene_set = set()
    for line in fl_open:
        line = line.strip()
        cols = line.split(" ")
        gene = cols[0]
        gene_set.add(gene)
    return gene_set

set_list = []
for fl in sys.argv[1:]:
    new_set = create_sig_set(fl)
    set_list.append(new_set)

# now create venn diagrams of these sets
text_names = [name.split(".")[0] for name in sys.argv[1:]]
if len(set_list) == 2:
    vn.venn2(set_list, text_names)
    c = vn.venn2_circles(set_list, linestyle='dashed')
if len(set_list) == 3:
    vn.venn3(set_list, text_names)
    c = vn.venn3_circles(set_list, linestyle='dashed')
for circ in c:
    circ.set_lw(1.0)
plt.show()

コード例 #43
0
ファイル: venn_genospecies.py プロジェクト: bvilhjal/nchain
   3*83,  # Ab
   3*463,  # aB
   5904,  # AB
	)

v = venn2(subsets=s, set_labels=('Genospecies D', 'Genospecies E'))

# # # Subset labels
v.get_label_by_id('10').set_text('83')
v.get_label_by_id('01').set_text('463')
v.get_label_by_id('11').set_text('5904')

# # # Subset colors
v.get_patch_by_id('10').set_color('c')
v.get_patch_by_id('01').set_color('#993333')
v.get_patch_by_id('11').set_color('blue')

# # # Subset alphas
v.get_patch_by_id('10').set_alpha(0.4)
v.get_patch_by_id('01').set_alpha(1.0)
v.get_patch_by_id('11').set_alpha(0.7)

# # # Border styles
c = venn2_circles(subsets=s, linestyle='solid')
c[0].set_ls('dashed')  # Line style
c[0].set_lw(2.0)       # Line width


plt.savefig('venn_diagram_de.pdf')
plt.clf()
コード例 #44
0
ファイル: specialdraw.py プロジェクト: Erotemic/ibeis
def event_space():
    """
    pip install matplotlib-venn
    """
    from matplotlib import pyplot as plt
    # import numpy as np
    from matplotlib_venn import venn3, venn2, venn3_circles
    plt.figure(figsize=(4, 4))
    v = venn3(subsets=(1, 1, 1, 1, 1, 1, 1), set_labels=('A', 'B', 'C'))
    v.get_patch_by_id('100').set_alpha(1.0)
    v.get_patch_by_id('100').set_color('white')
    v.get_label_by_id('100').set_text('Unknown')
    v.get_label_by_id('A').set_text('Set "A"')
    c = venn3_circles(subsets=(1, 1, 1, 1, 1, 1, 1), linestyle='dashed')
    c[0].set_lw(1.0)
    c[0].set_ls('dotted')
    plt.show()

    same = set(['comparable', 'incomparable', 'same'])
    diff = set(['comparable', 'incomparable', 'diff'])
    # comparable = set(['comparable', 'same', 'diff'])
    # incomparable = set(['incomparable', 'same', 'diff'])
    subsets = [same, diff]  # , comparable, incomparable]
    set_labels = ('same', 'diff')  # , 'comparable', 'incomparable')
    venn3(subsets=subsets, set_labels=set_labels)
    plt.show()

    import plottool as pt
    pt.ensure_pylab_qt4()
    from matplotlib_subsets import treesets_rectangles
    tree = (
        (120, 'Same', None), [
            ((50, 'comparable', None), []),
            ((50, 'incomparable', None), [])
        ]
        (120, 'Diff', None), [
            ((50, 'comparable', None), []),
            ((50, 'incomparable', None), [])
        ]
    )

    treesets_rectangles(tree)
    plt.show()

    from matplotlib import pyplot as plt
    from matplotlib_venn import venn2, venn2_circles  # NOQA

    # Subset sizes
    s = (
        2,  # Ab
        3,  # aB
        1,  # AB
    )

    v = venn2(subsets=s, set_labels=('A', 'B'))

    # Subset labels
    v.get_label_by_id('10').set_text('A but not B')
    v.get_label_by_id('01').set_text('B but not A')
    v.get_label_by_id('11').set_text('A and B')

    # Subset colors
    v.get_patch_by_id('10').set_color('c')
    v.get_patch_by_id('01').set_color('#993333')
    v.get_patch_by_id('11').set_color('blue')

    # Subset alphas
    v.get_patch_by_id('10').set_alpha(0.4)
    v.get_patch_by_id('01').set_alpha(1.0)
    v.get_patch_by_id('11').set_alpha(0.7)

    # Border styles
    c = venn2_circles(subsets=s, linestyle='solid')
    c[0].set_ls('dashed')  # Line style
    c[0].set_lw(2.0)       # Line width

    plt.show()