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)
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)
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);
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()
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()
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()
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)
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()
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
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
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
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
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()
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)
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()
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()
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()
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()
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')
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)
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()
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
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
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
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')
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')
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)
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()
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()
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()
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)
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*'-'
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()
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();
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')
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(
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])
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()
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()
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.
# 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()
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()
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()