python 生信 桑基图
时间: 2024-12-31 18:41:24 浏览: 17
### 使用 Python 创建桑基图
对于希望在生物信息学项目中创建桑基图的数据科学家来说,`matplotlib` 和 `plotly` 是两个常用的库。这些库提供了丰富的功能来构建复杂的图表并支持高度自定义。
#### Matplotlib 库中的 Sankey 图表实现
Matplotlib 的 `Sankey` 类可以用来绘制简单的桑基图:
```python
from matplotlib.sankey import Sankey
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8, 9))
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
title="Simple Sankey Diagram")
# 添加流
sankey = Sankey(ax=ax, scale=0.01)
# 定义流量及其连接方式
sankey.add(flows=[0.25, 0.15, 0.60, -0.20, -0.75, -0.15], labels=['', '', '',
'First',
'Second',
'Third'],
orientations=[-1, 1, 0, 1, 0, -1])
diagrams = sankey.finish()
plt.show()
```
这段代码展示了如何利用 `matplotlib` 来快速生成一个基础版本的桑基图[^1]。
#### Plotly 库用于交互式桑基图
Plotly 提供了一种更现代的方式去制作具有互动特性的桑基图,非常适合于探索性和报告性质的工作。下面是一个简单例子说明怎样使用 plotly.express 绘制桑基图:
```python
import pandas as pd
import plotly.graph_objects as go
data = dict(
node=dict(pad=15,
thickness=20,
line=dict(color="black", width=0.5),
label=["A1", "A2", "B1", "B2", "C1", "C2"],
color=["blue", "red", "green", "purple", "#FFD700", "#DC143C"]),
link=dict(source=[0, 1, 0, 2, 3, 3], # 节点索引列表
target=[2, 3, 3, 4, 4, 5],
value=[8, 4, 2, 8, 4, 2]))
fig = go.Figure(data=[go.Sankey(valueformat=".0f",
valuesuffix="TWh",
**data)])
fig.update_layout(title_text="Interactive Sankey Diagram with Plotly", font_size=10)
fig.show()
```
此段脚本不仅能够显示静态图像,还允许用户点击放大查看细节部分,极大地增强了用户体验和理解力[^2]。
#### PySankey 库简化流程分析
除了上述两种主流方案外,还有专门针对桑基图设计的小型第三方库 pySankey 可供选择。它特别适用于处理分类变量间的转移情况,比如基因表达水平变化路径等场景下的应用案例。
安装命令如下所示:
```bash
pip install pysankey
```
之后就可以按照官方文档指导轻松完成相应图形输出了。
阅读全文