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

yizhihongxing

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设计模式:根据参数返回不同对象的类

    【问题标题】:Python design pattern: class that returns different objects depending on parametersPython设计模式:根据参数返回不同对象的类 【发布时间】:2023-04-04 17:44:01 【问题描述】: 这个问题涉及 Python 中的设计模式,是针对软件设计人员的…

    Python开发 2023年4月6日
    00
  • 利用python实现逐步回归

    以下是关于“利用Python实现逐步回归”的完整攻略: 简介 逐步回归是一种特征选择技术,它通过逐步添加或删除特征来构建一个模型。在这个过程中,每次添加或删除一个特征,都会重新计算模型的误差,以确定哪个特征对模型的影响最大。本教程将介绍如何使用Python实现逐步回归,并讨论如何使用该技术来选择最佳特征集。 步骤 1.导入数据 首先,我们需要导入数据。可以使…

    python 2023年5月14日
    00
  • python爬取Ajax动态加载网页过程解析

    Python爬取Ajax动态加载网页是一种常见的数据挖掘技术,可以用于获取动态加载的网页内容。以下是详解Python爬取Ajax动态加载网页的完整攻略,包含两个示例。 方法1:使用Python爬取Ajax动态加载网页 在使用Python爬取Ajax动态加载网页之前,我们需要先了解Ajax动态加载网页的工作原理。Ajax是一种用于创建动态Web应用程序的技术,…

    python 2023年5月15日
    00
  • 详解运行Python的神器Jupyter Notebook

    详解运行Python的神器Jupyter Notebook Jupyter Notebook是一个交互式的笔记本,可以用于数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等多种数据科学领域。本文将详细介绍如何安装和使用Jupyter Notebook,并提供两个示例。 安装Jupyter Notebook Jupyter Notebook可以通过pi…

    python 2023年5月15日
    00
  • Python简单基础小程序的实例代码

    关于“Python简单基础小程序的实例代码”的完整攻略,这里我提供一个通用的步骤给大家参考: 1. 确定程序功能 在开始写代码之前,我们首先需要明确自己的程序要实现什么样的功能。比如,我们可以开发一个简单的BMI计算器,要求用户输入身高和体重,然后输出BMI的值和相应的评价(如过轻、正常、过重等等)。确定好程序功能之后,我们可以定义一些基本变量,比如身高和体…

    python 2023年5月19日
    00
  • python2.7删除文件夹和删除文件代码实例

    下面是详细的 Python2.7 删除文件夹和删除文件的攻略。 删除文件夹 在 Python2.7 中删除文件夹需要使用 os 模块中的 rmdir 或者 shutil 模块中的 rmtree 方法。 使用 os 模块中的 rmdir 方法删除文件夹 os.rmdir(path) 方法用于删除指定的路径,如果这个路径是一个目录的话,那么只能删除空目录,如果要…

    python 2023年6月2日
    00
  • Python自动生成代码 使用tkinter图形化操作并生成代码框架

    以下是Python自动生成代码使用tkinter图形化操作并生成代码框架的完整攻略。 总览 Python自动生成代码可以非常方便地实现快速生成大量代码的工作。使用tkinter图形化操作,可以使代码生成更加友好和高效。下面介绍具体的步骤。 第一步:安装相关工具包 使用Python自动生成代码需要安装pip,以及prompt_toolkit和pygments两…

    python 2023年5月19日
    00
  • Python urllib库如何添加headers过程解析

    当我们通过 Python 中的 urllib 库向某个网站发送 GET 或 POST 请求时,我们需要在请求头中添加一些自定义信息,例如 User-Agent,Cookies 等,以便对方服务器识别我们的身份或做一些其他限制。在 urllib 的 urllib.request 模块中,我们可以使用 Request 类来构造一个请求对象,并通过 add_hea…

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