import pandas as pd from matplotlib import pyplot as plt import matplotlib.patches as mpatches from matplotlib import rcParams rcParams['font.family'] = 'Arial' svpath = '/IPMNPDAC_WGS/Data/' svdf = pd.read_csv(svpath + '36treeSampleSV.csv') multipleBranch = ['case10','case3','case16','case2','case9','case7','case6'] singleBranch = ['case4','case12','case13', 'case15'] mb_sv = svdf[svdf['samples'].str.contains('|'.join(multipleBranch))][["Total"]] mb_sv.insert(0, 'samples', ['multipleBarnches']*mb_sv.shape[0]) sb_sv = svdf[svdf['samples'].str.contains('|'.join(singleBranch))][["Total"]] sb_sv.insert(0, 'samples', ['singleBranch']*sb_sv.shape[0]) dfplot = pd.concat([mb_sv, sb_sv]) dfplot.to_csv(svpath + "SV_multiple_single_branches.csv", index=0) boxpps = dict(linestyle='-', linewidth=0, color='r') medianpps = dict(linestyle='-', linewidth=1, color='r') ax = dfplot.boxplot(by='samples', medianprops=medianpps, boxprops=boxpps,rot=0, grid=False, showfliers=False, layout=(2,5), fontsize=10, return_type='both',figsize=(20,6), patch_artist = True) colors = ['lightgreen', 'pink' ] for row_key, (ax, row) in ax.items(): ax.set_title('') ax.set_ylabel("Total number of SVs") ax.set_xlabel("") ax.set_xticklabels(["Multiple branches", "Single branch"]) #ax.set_yticklabels("") ax.text(1.7, 160, 'p = 0.0024', fontsize=10) for i,box in enumerate(row['boxes']): box.set_facecolor(colors[i]) plt.title('') plt.suptitle('') plt.xticks([] ) plt.yticks([]) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ipmn_patch = mpatches.Patch(color='lightgreen', label='IPMN') pdac_patch = mpatches.Patch(color='pink', label='PDAC') plt.legend(handles=[ipmn_patch, pdac_patch], loc='best', frameon=False) plt.show()