文章目录
- 前言
- 数据准备
- 代码实现
- 结果展示
- 生信解读
- 总结
前言
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曲线图,适用于多组样本的甲基化数据可视化。你可以根据自己的数据和需求,调整分组、颜色、视角等参数,进一步美化图形。
如有问题或建议,欢迎留言交流!