赞
踩
aim_index='AMO' p_values_limit=0.1 p_values_limit1=0.05 import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from matplotlib import rcParams import matplotlib as mpl mpl.rcParams["font.family"] = 'Times New Roman' #默认字体类型 mpl.rcParams["mathtext.fontset"] = 'cm' #数学文字字体 mpl.rcParams["font.size"] = 15 #字体大小 mpl.rcParams["axes.linewidth"] = 1 #轴线边框粗细(默认的太粗了) # 读数据和排序 data=pd.read_excel('adelie_cor_plot.xlsx') data.sort_values("region",inplace=True) # 读显著性水平和排序 p_values=pd.read_excel('adelie_pvalues_plot.xlsx') p_values.sort_values("region",inplace=True) #设置画图时候的索引列 x=np.array(list(range(1,len(data)+1))) #准备柱状图的高度列 y1=np.array(data[aim_index]) #AP y2=np.array(data[aim_index]) #RS y3=np.array(data[aim_index]) #EA y_total=np.array(data[aim_index]) region=np.array(data['region']) y1[region!=1]=0 y2[region!=2]=0 y3[region!=3]=0 # 画柱状图 plt.figure(figsize=(12,5)) sns.set(font='Times New Roman')#####需要注意seaborn中也有对字体的设置 plt.bar(x,y1,label='AP') plt.bar(x,y2,label='RS') plt.bar(x,y3,label='EA') plt.tick_params(labelsize=15) plt.yticks(np.linspace(-0.8,0.8,9)) plt.ylim(-1,1) plt.legend(fontsize=15) plt.xlabel('Site',fontsize=16) plt.ylabel('Correlation coefficient',fontsize=16) plt.title('Correlation between '+aim_index+' and breeding pairs' ,fontsize=25) #做显著性标记 #找到显著的点的位置,即x和SAM值 y_p=np.array(p_values[aim_index]) x_loc=x[y_p<p_values_limit] y_loc=y_total[y_p<p_values_limit] for i in range(len(x_loc)): loc_h=x_loc[i]-0.25 if y_loc[i]<0: loc_v=y_loc[i]-0.03-0.06 else: loc_v=y_loc[i]+0.04-0.06 plt.text(loc_h,loc_v,'*',fontsize=16) #找到显著的点的位置,即x和SAM值 y_p=np.array(p_values[aim_index]) x_loc=x[y_p<p_values_limit1] y_loc=y_total[y_p<p_values_limit1] for i in range(len(x_loc)): loc_h=x_loc[i]-0.25 if y_loc[i]<0: loc_v=y_loc[i]-0.03-0.06 else: loc_v=y_loc[i]+0.04-0.06 plt.text(loc_h,loc_v,'*',fontsize=16,color='red')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。