当前位置:首页>python>期刊图片复现|Python绘制Nature和弦图

期刊图片复现|Python绘制Nature和弦图

  • 2026-10-11 06:26:19
期刊图片复现|Python绘制Nature和弦图

代码绘制成果展示

论文:Semantic design of functional de novo genes  from a genomic language model
论文原图
仿图
多种配色方案

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltfrom pycirclize import Circosimport pandas as pdimport matplotlibmatplotlib.rcParams['pdf.fonttype'] = 42matplotlib.rcParams['ps.fonttype'] = 42plt.rcParams['font.family'] = 'serif'plt.rcParams['font.serif'] = ['Times New Roman']plt.rcParams['axes.unicode_minus'] = False

第二部分

颜色库设置以及配色方案的选择
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: ["#4DBBD5", "#E64B35", "#00A087", "#3C5488", "#F39B7F", "#8491B0", "#91D1C2", "#DC0000", "#7E6148", "#B09C85",        "#374E55", "#DF8F44", "#00A1D5", "#B98C46", "#6D9731", "#2878B5", "#9AC9DB", "#C82423", "#FF8884", "#54B345",        "#05B9E2", "#8983BF", "#C76DA2", "#587848", "#E89132", "#08519C", "#41AB5D", "#A50F15", "#6A51A3", "#238B45",        "#2171B5", "#6BAED6", "#4292C6", "#238B45", "#74C476"],}scheme_index = 20  #选择配色方案

第三部分

绘图函数定义以及颜色的提取
# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def draw_chord_diagram(df,labels,scheme_id=1):    N = len(labels)  #特征总数量    #每个扇区的大小    sectors_dict = dict(zip(labels, df.sum(axis=1).values))    circos = Circos(sectors=sectors_dict, space=0)  #初始化Circos对象,传入扇区数据    #获取颜色方案    full_color_list = COLOR_SCHEMES.get(scheme_id, COLOR_SCHEMES[1])

第四部分

绘制外围圆环与标签
    #绘制扇区和特征标签    for sector in circos.sectors:  #遍历每一个扇区        #获取颜色        fill_color = color_dict.get(sector.name, "#CCCCCC")        #绘制半径93到100的主颜色环,带黑色细边框        sector.rect(r_lim=(93, 100)        #绘制外圈阴影圆环        sector.rect(r_lim=(101, 108),                    facecolor="#F0F0F0",                    edgecolor="#D0D0D0",                    linewidth=0)        label_text = sector.name  #获取当前扇区的名称作为特征标签文本        #绘制特征标签文本        sector.text(label_text,                    r=104,                    orientation="vertical",                    size=14,                    color="black")

第五部分

绘制和弦图内部的连线
    #绘制连线    for i in range(N):  #遍历行            #只有当数值大于0时才绘制连线            if value > 0:                source_label = labels[i]  #获取源节点标签                target_label = labels[j]  #获取目标节点标签                src_start = df.iloc[i, :j].sum()  #源节点在扇区内的起始弧度位置                color = color_dict.get(source_label, "#888888")                #绘制连线                circos.link(                    (source_label, src_start, src_end),  #源点坐标元组(标签,起点,终点)                    (target_label, tgt_start, tgt_end),  #终点坐标元组                    color=color,  #连线颜色                    alpha=0.6,  #连线透明度                    direction=0  #连线方向参数                )

第六部分

绘图结果的保存
    circos.plotfig()  #生成并绘制最终的图形对象    #设置标题    plt.title("Circos Graph",              fontsize=18,              pad=80)    #保存    plt.savefig(fr"chord_diagram_{scheme_index}.png", dpi=300, bbox_inches="tight")    plt.savefig(fr"chord_diagram_{scheme_index}.pdf", bbox_inches="tight")

第七部分

执行部分
# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':    data = r"data.xlsx"  #输入数据    #读取数据    df= pd.read_excel(data, index_col=0)    labels = df.index.tolist()  #获取数据框的索引列表,作为节点的标签    draw_chord_diagram(df,labels,scheme_id=scheme_index)  #调用绘图函数

如何应用到你自己的数据

1.选择你想要使用到的配色方案:

scheme_index =20  #选择配色方案

2.设置绘图结果的保存地址:

plt.savefig(fr"chord_diagram_{scheme_index}.png", dpi=300, bbox_inches="tight")plt.savefig(fr"chord_diagram_{scheme_index}.pdf", bbox_inches="tight")

3.设置原始数据的输入路径:

data = r"data.xlsx"  #输入数据

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

需要的请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释!!!

最新文章

随机文章