python绘制曼哈顿图
时间: 2023-07-06 07:21:32 浏览: 241
曼哈顿图(Manhattan plot)是一种用于可视化高通量数据中的关联性分析结果的图形。在 Python 中,我们可以使用 Matplotlib 库和 Pandas 库来绘制曼哈顿图。
下面是一个简单的示例代码,用于绘制曼哈顿图:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(42)
data = pd.DataFrame({'chromosome': ['chr{}'.format(i) for i in range(1, 23)] * 10,
'position': np.sort(np.random.randint(0, 10000000, 220)) + np.repeat(np.arange(0, 220, 22), 10),
'pvalue': np.random.rand(220)})
# 计算每个染色体上的 SNP 的 -log10(p-value)
data['logp'] = -np.log10(data['pvalue'])
# 绘制曼哈顿图
fig, ax = plt.subplots(figsize=(10, 6))
colors = {'chr1': 'r', 'chr2': 'b', 'chr3': 'g', 'chr4': 'c', 'chr5': 'm', 'chr6': 'y', 'chr7': 'k', 'chr8': 'orange', 'chr9': 'gray', 'chr10': 'purple', 'chr11': 'brown', 'chr12': 'pink', 'chr13': 'olive', 'chr14': 'navy', 'chr15': 'teal', 'chr16': 'gold', 'chr17': 'orchid', 'chr18': 'indigo', 'chr19': 'peru', 'chr20': 'sienna', 'chr21': 'tan', 'chr22': 'maroon'}
for i, (chrom, group) in enumerate(data.groupby('chromosome')):
ax.scatter(group['position'], group['logp'], color=colors[chrom], label=chrom, alpha=0.5, edgecolors='none')
ax.axhline(y=-np.log10(0.05/len(data)), linestyle='--', color='k')
ax.set_xlabel('Position')
ax.set_ylabel('-log10(p-value)')
ax.legend(title='Chromosome', loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()
```
这段代码首先生成了一个包含随机数据的 Pandas DataFrame,然后计算了每个染色体上的 SNP 的 -log10(p-value)。接着,使用 Matplotlib 库来绘制曼哈顿图。在这个示例中,我们使用散点图来绘制每个 SNP 的位置和 -log10(p-value),并使用不同的颜色来表示不同的染色体。同时,我们还添加了一个水平线,用于标识显著性水平(在这个示例中,显著性水平为 0.05/220,即 Bonferroni 校正后的显著性水平)。最后,我们添加了一些标签和图例,用于增加图形的可读性。
阅读全文