用 python 绘制火山图

作者: Z_bioinfo | 来源:发表于2022-04-22 16:34 被阅读0次

    导入模块

    import numpy as np
    import pandas as pd
    

    1.读取测试数据

    data=pd.read_csv(r'E:\ZYH\R.project\rna-seq\lianxi1\exon_level\df.csv')
    

    2.查看数据

    data.head()
    
    image.png

    3.筛选差异基因

    # 3.尝试写循环筛选上下调基因分类赋值给 "up" 和 "down" 和 "nosig" 加入pvalue条件
    ###loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)
    data.loc[(data.log2FoldChange>1)&(data.padj<0.05),'type']='up'
    data.loc[(data.log2FoldChange<-1)&(data.padj<0.05),'type']='down'
    data.loc[(abs(data.log2FoldChange)<=1)|(data.padj>=0.05),'type']='nosig'
    

    4.查看数据,发现多了type这一列

    data.head()
    

    5.统计个数

    data.type.value_counts()
    up      123
    down    103
    Name: type, dtype: int64
    

    6.绘火山图

    import seaborn as sns
    import math
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    %matplotlib inline
    
    # 对padj取个-log10对数
    data['-logpadj']=-data.padj.apply(math.log10)
    
    # 查看
    data[['log2FoldChange','padj','type','-logpadj']].head()
    
    image.png
    # 先设置一下自己的颜色
    colors = ["#01c5c4","#ff414d", "#686d76"]
    sns.set_palette(sns.color_palette(colors))
    
    # 绘图
    ax=sns.scatterplot(x='log2FoldChange', y='-logpadj',data=data,
                    hue='type',#颜色映射
                    edgecolor = None,#点边界颜色
                    s=8,#点大小
                    )
    # 标签
    ax.set_title("vocalno")
    ax.set_xlabel("log2FC")
    ax.set_ylabel("-log10(padj)")
    
    #移动图例位置
    ax.legend(loc='center right', bbox_to_anchor=(0.95,0.76), ncol=1)
    
    image.png

    7.保存图片

    fig = ax.get_figure()
    fig.savefig('./python_vocalno.pdf')
    

    相关文章

      网友评论

        本文标题:用 python 绘制火山图

        本文链接:https://www.haomeiwen.com/subject/nxenertx.html