python数据可视化绘制火山图示例

Python数据可视化绘制火山图示例

火山图是用来展示差异分析结果的常见可视化图形之一,该图形直观地展示了基于两组差异样本之间的显著性差异程度,常用于生物医药行业数据分析领域。下面给出Python数据可视化绘制火山图的详细攻略。

准备工作

在绘制火山图之前,需要安装matplotlib和pandas库。在安装完成后,接下来需要引入绘图库和数据读取模块。

import matplotlib.pyplot as plt
import pandas as pd

数据读取和处理

在进行数据可视化之前,需要读取并对数据进行处理。这里使用Pandas库读取Excel文件,并处理数据。

df = pd.read_excel('excel路径')

cond_less = df['Fold Change Log2'] <= -1
cond_more = df['Fold Change Log2'] >= 1

df_less = df[cond_less]
df_more = df[cond_more]
df_common = df[~(cond_less | cond_more)]

其中,cond_lesscond_more分别为筛选条件,df_lessdf_more为筛选后的数据,df_common则为剩下的数据。

绘制火山图

在对数据进行处理后,可以借助Matplotlib库开始绘制火山图。

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)

ax.scatter(df_less['Fold Change Log2'],-1 * np.log10(df_less['P value']),marker='o',c='r')
ax.scatter(df_more['Fold Change Log2'],-1 * np.log10(df_more['P value']),marker='o',c='g')
ax.scatter(df_common['Fold Change Log2'],-1 * np.log10(df_common['P value']),marker='o',c='k')

ax.set_xlabel('Log2(FC)')
ax.set_ylabel('-log10(P value)')

ax.set_xlim(-6,6)
ax.set_ylim(0,20)
plt.show()

其中,figax是分别实例化一个Figure对象和一个Axes对象,用于设置图形的大小和位置等属性。ax.scatter()则用于绘制散点图,其中marker参数为标记样式,c参数为颜色。

示例说明

示例1

下面给出一个具体的火山图实例。这次使用的数据集是Sun等人在2021年发表的文章<>,该文章描绘了腺体微环境在老化过程中的细胞构成和功能变化。我们将在该数据集基础上绘制火山图,以分析基因差异表达情况。

import numpy as np

df = pd.read_excel('age.xlsx')
df_less = df[df['log2FC']<=-1]
df_more = df[df['log2FC']>=1]
df_common = df[(df['log2FC']>-1)&(df['log2FC']<1)]

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)

ax.scatter(df_less['log2FC'],-1*np.log10(df_less['padj']),marker='o',c='r',label='Down')
ax.scatter(df_more['log2FC'],-1*np.log10(df_more['padj']),marker='o',c='g',label='Up')
ax.scatter(df_common['log2FC'],-1*np.log10(df_common['padj']),marker='o',c='k',label='NS')

ax.set_xlabel('log2FC')
ax.set_ylabel('-log10AdjP')
plt.legend(loc='upper left')

ax.set_xlim(-6,6)
ax.set_ylim(0,25)

plt.show()

该示例绘制了所有样本的火山图,并标注了上调、下调、无显著差异样本。

示例2

使用Python对实验数据进行不同基因间的分组比较时,我们经常使用差异分析方法,如t检验、ANOVA、Person等方法。本示例使用模拟数据,使用t检验判断是否存在基因表达量的差异,并进行火山图分析。

import numpy as np

# 随机模拟表达水平
np.random.seed(100)
group1 = np.random.normal(30, 10, 50)
group2 = np.random.normal(35, 10, 50)

# 计算p值和FC值
from scipy import stats
p_values = []
for i in range(len(group1)):
    t, p = stats.ttest_ind(group1[i], group2[i])
    p_values.append(p)

log2FC = np.log2(group2 + 1) - np.log2(group1 + 1)

df = pd.DataFrame({'log2FC': log2FC, 'P value': p_values})
df_less = df[df['log2FC']<=-1]
df_more = df[df['log2FC']>=1]
df_common = df[(df['log2FC']>-1)&(df['log2FC']<1)]

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)

ax.scatter(df_less['log2FC'],-1*np.log10(df_less['P value']),marker='o',c='r',label='Down')
ax.scatter(df_more['log2FC'],-1*np.log10(df_more['P value']),marker='o',c='g',label='Up')
ax.scatter(df_common['log2FC'],-1*np.log10(df_common['P value']),marker='o',c='k',label='NS')

ax.set_xlabel('log2FC')
ax.set_ylabel('-log10P')

ax.set_ylim(0, 10)

plt.show()

该示例是模拟数据进行的火山图绘制,其中随机模拟了两组基因的表达水平,并随机计算了p值和FC值,最后用t检验方法判断是否存在表达差异。接下来,根据FC值和显著性水平的阈值绘制火山图。

结论

Python数据可视化绘制火山图是生物医药领域常用的可视化方式之一,通过示例演示,读者可以初步了解火山图的绘制方法和解读方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据可视化绘制火山图示例 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python自动化测试工具Helium使用示例

    Python自动化测试工具Helium使用示例 简介 Helium是Python的自动化测试工具,它可以自动化执行浏览器上的测试,并返回测试结果。Helium支持多种浏览器,包括:Chrome, Firefox, Internet Explorer, Safari等,并且可以通过模拟用户在浏览器上的操作,进行自动化测试。 安装 使用pip安装Helium: …

    python 2023年5月19日
    00
  • 玩转python爬虫之cookie使用方法

    玩转Python爬虫之Cookie使用方法 在使用Python进行爬虫的过程中,Cookie是一个非常重要的概念,有时候需要用到Cookie才能成功爬取数据。本文将详细讲解Python中Cookie的使用方法。 什么是Cookie Cookie是由Web服务器保存在用户浏览器中的一小段文本信息。当用户浏览器再次访问该服务器时,浏览器会自动向服务器发送这些Co…

    python 2023年5月18日
    00
  • 详解python使用金山词霸的翻译功能(调试工具断点的使用)

    详解python使用金山词霸的翻译功能(调试工具断点的使用) 在进行Python编程时,需要进行中文与英文之间的翻译,这时可以使用金山词霸的翻译功能来解决翻译问题。本文将会详细讲解如何在Python中使用金山词霸翻译功能,并辅以调试工具断点的使用进行说明。 第一步:导入需要的模块 首先,需要导入使用的模块requests和json。其中,requests模块…

    python 2023年5月13日
    00
  • Python3 json模块之编码解码方法讲解

    Python3 json模块之编码解码方法讲解 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,这使得它非常适合于数据的传输。同时,JSON的格式也非常易于人阅读和编写,也容易被机器解析和生成。在Web应用中,JSON由…

    python 2023年5月31日
    00
  • python 串行执行和并行执行实例

    下面是关于Python串行执行和并行执行实例的详细攻略。 什么是Python串行执行和并行执行 Python串行执行指的是程序按照代码编写的顺序依次执行,即每一行代码依次执行,完成一个任务后才继续执行下一个任务。这种执行方式适合于任务之间没有依赖关系的场景。例如: import time def task1(): time.sleep(2) # 模拟任务1的…

    python 2023年5月19日
    00
  • python模块hashlib(加密服务)知识点讲解

    以下是“python模块hashlib(加密服务)知识点讲解”的完整攻略。 什么是hashlib模块? Hashlib是Python中一个非常有用的加密模块,提供了许多加密算法的实现。我们可以使用哈希函数算法对字符串进行加密,从而保证数据的安全性。常用的哈希函数算法包括:md5、sha1、sha256、sha512等。在实际场景中,我们通常使用sha256和…

    python 2023年6月2日
    00
  • 利用python绘制笛卡尔直角坐标系

    下面我将详细讲解“利用Python绘制笛卡尔直角坐标系”的完整攻略。 1. 准备工作 首先,需要安装好Python以及相关的绘图库,例如Matplotlib。在终端或命令行中输入以下命令进行安装: pip install matplotlib 2. 绘制直角坐标系 绘制直角坐标系的方法是通过Matplotlib中的plot()函数来进行绘制。具体步骤如下: …

    python 2023年6月3日
    00
  • python XlsxWriter模块创建aexcel表格的实例讲解

    下面是Python XlsxWriter模块创建Excel表格的实例讲解: 1. 导入模块 在使用 XlsxWriter 前,我们需要先导入该模块: import xlsxwriter 2. 创建工作薄 创建一个工作薄(Workbook)对象,用于写入 Excel 文件。 workbook = xlsxwriter.Workbook(‘example.xls…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部