Python Pycirclize绘制和弦图(附带实例)
和弦图(Chord Diagram)是一种用于可视化关系和流量的图表类型。它通过使用弦和节点来表示数据中的实体和它们之间的关系,帮助展示复杂网络中的交互和连接模式。
弦的宽度和颜色可以用来表示关系的强度或流量的大小,较宽或较深的弦可能表示较强的关系或较大的流量。
弦图的优点是能够直观地显示实体之间的关系和流量,并帮助观察数据中的交互模式。它常用于显示社交网络、流量分析、组织结构等。
【实例 1】使用 Pycirclize 库创建和弦图 1。输入如下代码:
【实例 2】使用 Pycirclize 库创建和弦图 2。输入如下代码:
【实例 3】使用 Pycirclize 库创建和弦图 3。输入如下代码:
弦的宽度和颜色可以用来表示关系的强度或流量的大小,较宽或较深的弦可能表示较强的关系或较大的流量。
弦图的优点是能够直观地显示实体之间的关系和流量,并帮助观察数据中的交互模式。它常用于显示社交网络、流量分析、组织结构等。
【实例 1】使用 Pycirclize 库创建和弦图 1。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类
import pandas as pd # 导入 Pandas 库
# 创建矩阵数据框(3 行 6 列)
row_names = ["s1", "s2", "s3"] # 行名称
col_names = ["E1", "E2", "E3", "E4", "E5", "E6"] # 列名称
# 矩阵数据
matrix_data = [
[4, 14, 13, 17, 5, 2 ],
[7, 1, 6, 8, 12, 15],
[9, 10, 3, 16, 11, 18]
]
matrix_df = pd.DataFrame(matrix_data,
index=row_names,
columns=col_names)
# 从矩阵初始化和弦图(也可以直接加载 TSV 格式的矩阵文件)
circos = Circos.initialize_from_matrix(
matrix_df,
start=-265, # 起始角度
end=95, # 结束角度
space=5, # 每个扇形之间的间隔
r_lim=(93, 100), # 设置半径范围
cmap="tab10", # 颜色映射
label_kws=dict(r=94, size=12, color="white"), # 标签参数
link_kws=dict(ec="black", lw=0.5) # 连接线参数
)
print(matrix_df) # 打印矩阵数据框
fig = circos.plotfig() # 绘制和弦图
上述代码首先创建了一个包含数字的矩阵数据框,然后使用该数据初始化了 Circos 对象。通过指定一些参数,如起始角度、结束角度、半径范围、颜色映射等,创建了和弦图。输出的结果如下图所示。
【实例 2】使用 Pycirclize 库创建和弦图 2。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类
import pandas as pd # 导入 Pandas 库
# 创建矩阵数据(10 行 10 列)
row_names = list("ABCDEFGHIJ") # 行名称
col_names = row_names # 列名称与行名称相同
matrix_data = [
[51, 115, 60, 17, 120, 126, 115, 179, 127, 114],
[108, 138, 165, 170, 85, 221, 75, 107, 203, 791],
[108, 54, 72, 123, 84, 117, 106, 114, 50, 271],
[62, 134, 28, 185, 199, 179, 74, 94, 116, 108],
[211, 114, 49, 55, 202, 97, 10, 52, 99, 111],
[87, 6, 101, 117, 124, 171, 110, 14, 175, 164],
[167, 99, 109, 143, 98, 42, 95, 163, 134, 781],
[88, 83, 136, 71, 122, 20, 38, 264, 225, 115],
[145, 82, 87, 123, 121, 55, 80, 32, 50, 121],
[122, 109, 849, 94, 133, 75, 71, 115, 60, 210],
]
matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names) # 使用 Pandas 创建数据框
# 从矩阵初始化和弦图(也可以直接加载 TSV 格式的矩阵文件)
circos = Circos.initialize_from_matrix(
matrix_df,
space=3, # 每个扇形之间的间隔
r_lim=(93, 100), # 设置半径范围
cmap="tab10", # 颜色映射
ticks_interval=500, # 刻度间隔
label_kws=dict(r=94, size=12, color="white"), # 标签参数
link_kws=dict(ec="black", lw=0.5), # 连接线参数
)
print(matrix_df) # 打印矩阵数据框
fig = circos.plotfig() # 绘制和弦图
上述代码首先创建了一个包含数字的矩阵数据框,然后使用该数据初始化了 Circos 对象。通过指定一些参数,如每个扇形之间的间隔、半径范围、颜色映射等,创建了和弦图。输出的结果如下图所示。
【实例 3】使用 Pycirclize 库创建和弦图 3。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类
from pycirclize.parser import Matrix # 导入 Pycirclize 库中的 Matrix 解析器
import pandas as pd # 导入 Pandas 库
# 创建 from-to 表格数据框并转换为矩阵
fromto_table_df = pd.DataFrame([["A", "B", 10], ["A", "C", 5],
["A", "D", 15], ["A", "E", 201], ["A", "F", 3],
["B", "A", 3], ["B", "G", 151], ["F", "D", 13],
["F", "E", 2], ["E", "A", 201], ["E", "D", 61]],
columns=["from", "to", "value"],) # 列名(可选)
matrix = Matrix.parse_fromto_table(fromto_table_df) # 从 from-to 表格数据框解析矩阵
# 从矩阵初始化和弦图
circos = Circos.initialize_from_matrix(matrix,
space=3, # 每个扇形之间的间隔
cmap="viridis", # 颜色映射
ticks_interval=5, # 刻度间隔
label_kws=dict(size=12, r=110), # 标签参数
link_kws=dict(direction=1, ec="black", lw=0.5),) # 连接线参数
print(fromto_table_df.to_string(index=False)) # 打印 from-to 表格数据框
fig = circos.plotfig() # 绘制和弦图
上述代码首先创建了一个包含 from-to 信息的表格数据框,并使用 Matrix 解析器将其转换为矩阵。然后使用该矩阵初始化了 Circos 对象。通过指定一些参数,如每个扇形之间的间隔、颜色映射等,创建和弦图。输出的结果如下图所示。
ICP备案:
公安联网备案: