Pandas+Seaborn+Matplotlib实现不同颜色分组散点图+回归分析

Pandas+Seaborn+Matplotlib实现不同颜色分组散点图+回归分析,第1张

Pandas+Seaborn+Matplotlib实现不同颜色分组散点图+回归分析

任务:有一个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()  # 显示图片

结果如下图:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5593585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存