pyCirclize:Python圆形可视化库全面解析与使用指南
pyCirclize是一个基于matplotlib实现的圆形可视化Python包,专注于以美观且直观的方式绘制如Circos图、弦图(Chord Diagram)、雷达图等。该库受到R语言circlize包和Python的pyCircos包的启发,为生物信息学领域提供了有用的基因组和系统发育树可视化方法。
项目架构深度解析
深入了解pyCirclize的目录结构是掌握这个库的第一步:
- 核心代码模块:src/pycirclize/ - 包含所有可视化功能的实现
- 完整文档资源:docs/ - 详细的API参考和使用教程
- 质量保证:tests/ - 确保功能稳定可靠的测试套件
- 项目配置:pyproject.toml - 现代化的Python项目设置
核心模块功能详解
pyCirclize的核心代码位于src/pycirclize/目录下,包含以下重要模块:
- circos.py - 核心Circos类,负责初始化和管理圆形布局
- sector.py - 扇区管理,处理不同数据区域
- track.py - 轨道管理,用于在扇区内绘制数据
- tree.py - 系统发育树可视化
- parser/ - 数据解析器,支持多种文件格式
- utils/ - 实用工具函数和示例数据集
pyCirclize创建的基础Circos图展示多扇区数据分布
基础使用与快速入门
开始使用pyCirclize非常简单,只需要几行代码即可创建基本圆形图表:
from pycirclize import Circos
import numpy as np
# 初始化Circos扇区
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
# 绘制扇区名称
sector.text(f"Sector: {sector.name}", r=110, size=15)
基因组数据可视化
pyCirclize在生物信息学领域特别有用,可以轻松处理基因组数据:
from pycirclize import Circos
from pycirclize.utils import fetch_genbank_by_accid
from pycirclize.parser import Genbank
# 下载E.coli质粒genbank数据
gbk_fetch_data = fetch_genbank_by_accid("NC_002483")
gbk = Genbank(gbk_fetch_data)
# 初始化Circos实例并设置基因组大小
sectors = gbk.get_seqid2size()
circos = Circos(sectors, space=space)
弦图与网络关系展示
弦图是展示复杂网络关系的理想工具:
from pycirclize import Circos
import pandas as pd
# 创建矩阵数据
matrix_data = [
[10, 16, 7, 7, 10, 8],
[4, 9, 10, 12, 12, 7],
[17, 13, 7, 4, 20, 4],]
matrix_df = pd.DataFrame(matrix_data)
# 初始化Circos实例进行弦图绘制
circos = Circos.chord_diagram(
matrix_df,
space=5,
cmap="tab10",
link_kws=dict(ec="black", lw=0.5, direction=1),
)
系统发育树可视化
pyCirclize可以轻松处理系统发育树数据:
from pycirclize import Circos
from pycirclize.utils import load_example_tree_file
# 从系统发育树初始化Circos
tree_file = load_example_tree_file("large_example.nwk")
circos, tv = Circos.initialize_from_tree(
tree_file,
r_lim=(30, 100),
leaf_label_size=5,
line_kws=dict(color="lightgrey", lw=1.0),
)
*pyCirclize支持从Newick格式文件加载系统发育树数据,并进行圆形布局可视化。
雷达图与多参数比较
雷达图是展示多个参数比较的理想选择:
from pycirclize import Circos
import pandas as pd
# 创建RPG职业参数数据
df = pd.DataFrame(
data=[
[80, 80, 80, 80, 80, 80, 80],
[90, 20, 95, 95, 30, 30, 80],
[60, 90, 20, 20, 100, 90, 50],
],
index=["Hero", "Warrior", "Wizard"],
columns=["HP", "MP", "ATK", "DEF", "SP.ATK", "SP.DEF", "SPD"],
)
# 初始化Circos实例进行雷达图绘制
circos = Circos.radar_chart(
df,
vmax=100,
marker_size=6,
grid_interval_ratio=0.2,
)
pyCirclize创建的雷达图展示多参数比较
高级功能与定制选项
pyCirclize提供了丰富的定制选项:
- 颜色主题 - 支持自定义调色板
- 轨道布局 - 灵活调整间距和层次
- 标签系统 - 智能标签定位和格式化
安装与依赖管理
pyCirclize可以通过PyPI进行安装:
pip install pycirclize
通过conda-forge安装:
conda install -c conda-forge pycirclize
学习资源与最佳实践
官方文档与示例
- 快速入门指南:docs/getting_started.ipynb 详细的入门教程和代码示例
实用技巧
- 数据预处理 - 确保数据格式正确
- 从简单开始 - 先掌握基础图表类型
- 渐进式复杂化 - 逐步添加高级功能
通过本文的全面解析,相信您已经对pyCirclize有了深入的理解。这个强大的Python库能够帮助您以专业级质量展示复杂的圆形数据可视化,无论是基因组数据、网络关系还是多参数比较,pyCirclize都提供了简单易用的解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






