python
主页 > 脚本 > python >

python数据可视化绘制火山图

2022-06-25 | 酷站 | 点击:

导入模块

1

2

import numpy as np

import pandas as pd

1.读取测试数据

1

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

2.查看数据

1

data.head()

3.筛选差异基因

1

2

3

4

5

# 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这一列

1

data.head()

5.统计个数

1

2

3

4

data.type.value_counts()

up      123

down    103

Name: type, dtype: int64

6.绘火山图

1

2

3

4

5

6

7

8

9

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()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 先设置一下自己的颜色

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)

7.保存图片

1

2

fig = ax.get_figure()

fig.savefig('./python_vocalno.pdf')

原文链接:https://www.jianshu.com/p/0f044813daaf
相关文章
最新更新