DNA序列2D随机游走可视化:如何为四种碱基分别设置不同展示颜色
实现方案
完全可以实现不同碱基对应路径段的颜色区分,核心逻辑是放弃一次性绘制整条路径,改为逐段绘制每一步的移动轨迹,单独为每段路径匹配对应碱基的颜色,修改后可直接运行的完整代码如下:
import matplotlib.pyplot as plt from matplotlib.patches import Patch # 用于构建自定义图例 # 初始化起点坐标 x = y = 0 x_values = [0] y_values = [0] dna_seq = ('GGACTTCCCTATGGTGCTAACAAAGAGGCAGACAAA') # 统一管理碱基的移动规则与配色,可按需调整颜色值 base_rule = { 'T': {'color': '#FF3B30', 'move': (0, 1)}, # 红色:向上 'A': {'color': '#007AFF', 'move': (0, -1)}, # 蓝色:向下 'G': {'color': '#34C759', 'move': (1, 0)}, # 绿色:向右 'C': {'color': '#FF9500', 'move': (-1, 0)} # 橙色:向左 } # 生成所有坐标点 for base in dna_seq: dx, dy = base_rule[base]['move'] x += dx y += dy x_values.append(x) y_values.append(y) fig, ax = plt.subplots(figsize=(8,8)) # 逐段绘制路径,每段使用对应碱基的颜色 for i in range(len(dna_seq)): current_base = dna_seq[i] seg_x = [x_values[i], x_values[i+1]] seg_y = [y_values[i], y_values[i+1]] ax.plot(seg_x, seg_y, c=base_rule[current_base]['color'], linewidth=2) # 生成颜色与碱基对应的图例 legend_elements = [Patch(facecolor=v['color'], label=k) for k, v in base_rule.items()] ax.legend(handles=legend_elements, loc='upper left', title='碱基类型') # 可选配置:坐标轴标签、标题、网格 ax.set_xlabel('水平位移(G向右/C向左)') ax.set_ylabel('垂直位移(T向上/A向下)') ax.set_title('DNA序列随机游走可视化') ax.grid(alpha=0.3) plt.show()
内容的提问来源于stack exchange,提问作者user16139454
相关产品推荐
相关产品推荐

