当前位置: 首页 > ds >正文

2025.06.12【3D曲线图】|用Python绘制DNA甲基化3D曲线图(以CpG位点为例)

文章目录

    • 前言
    • 数据准备
    • 代码实现
    • 结果展示
    • 生信解读
    • 总结

前言

DNA甲基化是表观遗传学研究中的重要内容,常用于肿瘤、发育等领域。对不同组织或疾病状态下的甲基化水平进行可视化,有助于我们直观理解其变化规律。本文将以CpG位点甲基化数据为例,利用Python的matplotlib库绘制3D曲线图,实现多组样本的甲基化模式可视化。


数据准备

假设我们有如下格式的甲基化数据(methylation_example.csv),每行为一个CpG位点,每列为不同组织类型的甲基化百分比:

CpG_site,Normal,BPH,HG-PIN,GR3,GR4.5
1,8,12,18,30,55
2,9,13,19,32,57
...
41,26,30,52,66,96

代码实现

我们将用matplotlib的3D绘图功能,分别为每个组织类型绘制一条甲基化曲线。

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np# 读取数据
df = pd.read_csv('methylation_example.csv')# X轴:CpG位点
x = df['CpG_site']
# Z轴:组织类型索引
groups = ['Normal', 'BPH', 'HG-PIN', 'GR3', 'GR4.5']
z = np.arange(len(groups))# 创建3D图形
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')# 绘制每个组织类型的曲线
for i, g in enumerate(groups):y = df[g]ax.plot(x, y, zs=z[i], zdir='y', label=g, alpha=0.8)ax.set_xlabel('CpG site')
ax.set_ylabel('Tissue type')
ax.set_zlabel('Percentage methylation (%)')
ax.set_yticks(z)
ax.set_yticklabels(groups)
ax.set_title('3D Methylation patterns across CpG sites and tissue types')
plt.legend()
plt.tight_layout()
plt.savefig('methylation_plot_3d.png')
plt.savefig('methylation_plot_3d.pdf')
plt.show()

结果展示

运行上述代码后,将得到如下3D曲线图(示意):

请添加图片描述

  • X轴:CpG位点编号
  • Y轴:不同组织类型(Normal、BPH、HG-PIN、GR3、GR4.5)
  • Z轴:甲基化百分比

每条曲线代表一个组织类型在各CpG位点的甲基化水平变化。


生信解读

  • 通过3D曲线图,可以直观比较不同组织/疾病状态下的甲基化模式。
  • 例如,肿瘤高分级(如GR4.5)通常在多个CpG位点上甲基化水平更高,正常组织(Normal)则较低。
  • 这种可视化方式有助于发现甲基化的区域性变化、分组间的差异,为后续的生物学分析和机制研究提供线索。

总结

本文介绍了如何用Python绘制DNA甲基化3D曲线图,适用于多组样本的甲基化数据可视化。你可以根据自己的数据和需求,调整分组、颜色、视角等参数,进一步美化图形。

如有问题或建议,欢迎留言交流!

http://www.xdnf.cn/news/13959.html

相关文章:

  • 局域网内 100 台设备同屏直播技术方案
  • 【总天数两种算法相互印证正确】2022-4-13
  • flowable查询历史流程实例时条件变量的类型问题
  • 实战解析:如何用克魔(KeyMob)等工具构建iOS应用稳定性与数据可观测体系
  • 【web应用】若依框架:若依框架中的面包屑导航与顶部导航栏:设计与实现
  • 电感详解同时其主要特性参数是什么?都有涉及哪些方面?
  • Wireshark 的基本使用
  • vulnyx Exec writeup
  • C++内存管理与编译链接
  • 芯片制程变化
  • centos 7.9 升级ssh版本 7.4p1 升级到 8.2p1
  • Spring AI Chat Client API 指南
  • uni-app项目实战笔记2--使用swiper实现纵向轮播图
  • 常见数据结构
  • Java中的classpath
  • 1.ES介绍
  • 算法第14天|继续学习二叉树:找二叉树左下角的值、二叉树路径总和、从中序遍历与后序遍历序列构建二叉树
  • 解决 PyTorch 与 Python 3.12 的兼容性问题:`operator torchvision::nms does not exist` 深度解析
  • leetcode 路径总和III java
  • 【unitrix】1.2 unitrix 物理量计算库(lib.rs)
  • springboot集成minio详细流程代码
  • 报表工具顶尖对决系列—关联过滤
  • [原创]X86C++反汇编03.除法的优化
  • 使用Nginx 如何解决Access-Control-Allow-Origin问题
  • 【大模型-写作】LLMxMapReduce-V2 自动修改大纲 生成高质量文章
  • 在macOS上运行Linux容器的方法
  • go-carbon v2.6.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
  • 【C/C++】创建文件夹
  • FreeRTOS事件组
  • Jetpack LiveData 深度解析