def chart_prep(indexes, csv_data_list, file_name): colors = 100 * np.random.random(100).tolist() l = [] for my_index in indexes: my_index_list = [] for csv_data_chunk in csv_data_list: if csv_data_chunk[0] == my_index: my_index_list.append(csv_data_chunk) # l.append(my_index_list, file_name, colors.pop())) l.append((my_index_list, my_index, colors.pop())) return l
def plot_marker_accessions_hist(self, pid, marker, m_accessions, plot_file=None, plot_format='png', m_position=None, m_chromosome=None, title=None, m_score=None): """ A histogram displaying the phenotype values (ordered) on the y-axis, and the accession on the x-axis. """ import matplotlib.cm as cm import matplotlib.colors as colors color_map = {} colors = ['r', 'm', 'b', 'g'] proxy_rects = [] labels = [] for nt in set(marker): c = colors.pop() color_map[nt] = c proxy_rects.append(plt.Rectangle((0, 0), 1, 1, fc=c, alpha=0.6)) labels.append("'%s' allele" % str(nt)) phen_values = self.get_values(pid) ets = self.get_ecotypes(pid) l = zip(phen_values, ets, marker) l.sort(reverse=True) fig = plt.figure(figsize=(20, 10)) ax = fig.add_axes([0.07, 0.15, 0.91, 0.82]) x_range = len(l) - 0.2 min_y = min(phen_values) max_y = max(phen_values) y_range = max_y - min_y for i, (phen_val, accession, nt) in enumerate(l): color = color_map[nt] rect = ax.bar(i, phen_val, 0.8, color=color, alpha=0.6) ax.axis([ -x_range * 0.02, x_range * 1.02, min_y - 0.05 * y_range, max_y + 0.05 * y_range ]) ax.legend(proxy_rects, labels) ax.set_ylabel('Phenotype value') ax.set_xticks((sp.arange(len(ets)) + 0.4).tolist()) ax.set_xticklabels(ets, rotation='vertical', fontsize='xx-small') ax.set_xlabel('Ecotype IDs') fig.savefig(plot_file, format=plot_format, dpi=300)
def plot_marker_accessions_hist( self, pid, marker, m_accessions, plot_file=None, plot_format="png", m_position=None, m_chromosome=None, title=None, m_score=None, ): """ A histogram displaying the phenotype values (ordered) on the y-axis, and the accession on the x-axis. """ import matplotlib.cm as cm import matplotlib.colors as colors color_map = {} colors = ["r", "m", "b", "g"] proxy_rects = [] labels = [] for nt in set(marker): c = colors.pop() color_map[nt] = c proxy_rects.append(plt.Rectangle((0, 0), 1, 1, fc=c, alpha=0.6)) labels.append("'%s' allele" % str(nt)) phen_values = self.get_values(pid) ets = self.get_ecotypes(pid) l = zip(phen_values, ets, marker) l.sort(reverse=True) fig = plt.figure(figsize=(20, 10)) ax = fig.add_axes([0.07, 0.15, 0.91, 0.82]) x_range = len(l) - 0.2 min_y = min(phen_values) max_y = max(phen_values) y_range = max_y - min_y for i, (phen_val, accession, nt) in enumerate(l): color = color_map[nt] rect = ax.bar(i, phen_val, 0.8, color=color, alpha=0.6) ax.axis([-x_range * 0.02, x_range * 1.02, min_y - 0.05 * y_range, max_y + 0.05 * y_range]) ax.legend(proxy_rects, labels) ax.set_ylabel("Phenotype value") ax.set_xticks((sp.arange(len(ets)) + 0.4).tolist()) ax.set_xticklabels(ets, rotation="vertical", fontsize="xx-small") ax.set_xlabel("Ecotype IDs") fig.savefig(plot_file, format=plot_format, dpi=300)
def draw_top(main_models, sub_models_list, cmap=custom_cmap, legend_names=None, topn=20, offset=0.2, width_ratio=0.1, height_ratio=0.2, linewidth=1, point_size=5, fontsize=12, box_aspect=None, value_aspect='auto', id_csv_path='./data/mask/cortical_id_new.csv', show=True, out_path=None): # load id Dataframe id_df = pd.read_csv(id_csv_path, index_col=1) main_df = models_to_dataframe(main_models) sub_dfs = [models_to_dataframe(models) for models in sub_models_list] sorted_main_df = main_df.sort_values('es') top_df = sorted_main_df[:topn] colors = cmap(np.arange(1 + len(sub_models_list))).tolist() main_color = colors.pop(0) fig = plt.figure(figsize=(width_ratio * topn, height_ratio * topn)) ax = fig.add_axes([0, 0, 1, 1]) legends = [] y_labels = [] y = topn for index, row in top_df.iterrows(): ll = row['ll'] ul = row['ul'] es = row['es'] plt.scatter(es, y, s=point_size, color=main_color) b, = plt.plot((ll, ul), (y, y), linewidth=linewidth, color=main_color) if y == topn: legends.append(b) y = y - 1 y_labels.append(id_df.loc[int(index)]['name']) i = 1 offsets = [] for i in range(2, len(sub_models_list) + 2): if i % 2: offsets.append(offset * int(i / 2)) else: offsets.append(-offset * int(i / 2)) top_sub_dfs = [top_df.align(df, join='left')[1] for df in sub_dfs] for sub_df, color, _offset in zip(top_sub_dfs, colors, offsets): y = topn for index, row in sub_df.iterrows(): ll = row['ll'] ul = row['ul'] es = row['es'] plt.scatter(es, y + _offset, s=point_size, color=color) b, = plt.plot((ll, ul), (y + _offset, y + _offset), linewidth=linewidth, color=color) if y == topn: legends.append(b) y = y - 1 i += 1 ax.set_yticks(np.arange(topn + 1)) y_labels.append('') y_labels.reverse() ax.set_yticklabels(y_labels, fontdict={'fontsize': fontsize}) ax.tick_params(axis='both', which='major', labelsize=fontsize) ax.tick_params(axis='y', length=0) if legend_names is not None and len(legend_names) == len(legends): plt.legend(legends, legend_names) ax.set_box_aspect(aspect=box_aspect) ax.set_aspect(aspect=value_aspect) if out_path is not None: plt.savefig(out_path) if show: plt.show() plt.close()
m.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) meridians = np.arange(180.,360.,10.) m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) # display blue marble image (from NASA) as map background #m.bluemarble() conn = pypyodbc.connect('DSN=localMSSQL') cur = conn.cursor() sql= "select top 10000 constituentlookupid,post_code,latitude, longitude,gender from [saeed_cons_spatial] where post_code is not null" cur.execute(sql) dd=cur.fetchall(); df=pd.DataFrame(dd) colors = list("rgb") groups_gend = df.groupby(df[4]) for name, group in groups_gend: lons=group[3].values lats=group[2].values gend=group[4].values x, y = m(lons,lats) m.scatter(x.tolist(), y.tolist(), color=colors.pop(), alpha=0.05,linewidth='0', label=name) plt.legend() plt.show()