任务:有一个excel表格,想要画第2、3列的散点图,不同物种不同颜色,突出显示均值,并画出回归线。
第一步,导入包:
#-- coding : utf-8 -- import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
第二步,防止输出的图片出现乱码,并设置字体为新罗马:
plt.rcParams['font.sans-serif'] = ['Times New Roman'] # 解决中文显示问题-设置字体为新罗马 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
第三步,设置一个颜色列表,这里的颜色列表是随机选的颜色,具体可以参考matploblib颜色列表及形状:
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b','#e377c2', '#bcbd22'] # 设置颜色列表
第四步,读取文件:
df = pd.read_csv('test.csv',header=0, index_col=None, encoding='utf-8')
第五步,绘制图像:
# 绘制图像,自定义画布(尺寸8*6) plt.figure(figsize=(8, 6)) # 绘制回归线 sns.regplot(x='Neutral heterozygosity',y='0/4-fold heterozygosity', scatter_kws={"color": "white"}, line_kws={'color':'black'},data=df) # 绘制散点图,其中不同物种不同颜色 i = 0 # 按物种分组 for id, dfi in df.groupby('物种', as_index=True): # 绘制普通值散点,透明度0.5 plt.scatter(dfi['Neutral heterozygosity'], # 横坐标 dfi['0/4-fold heterozygosity'], # 纵坐标 c=colors[i], # 颜色 label=id, alpha=0.5, #透明度 linewidths=0 ) # 标签 # 绘制均值散点,透明度1 xmean = dfi['Neutral heterozygosity'].mean() ymean = dfi['0/4-fold heterozygosity'].mean() plt.scatter(xmean, # 横坐标 ymean, # 纵坐标 c=colors[i], # 颜色 alpha=1, #透明度 linewidths=0 ) # 标签 i += 1 # 修改图例、xy轴的字体属性 plt.legend(prop={'style':'oblique', 'size': 10},) # 显示图例,设置字体属性 plt.xlabel('Neutral heterozygosity', fontdict={'weight':'semibold', 'size': 12}) #设置x坐标轴字体属性 plt.ylabel('0/4-fold heterozygosity', fontdict={'weight':'semibold', 'size': 12}) plt.show() # 显示图片
结果如下图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)