首页 > 解决方案 > 查看不同颜色的 2D DNA walk

问题描述

我有兴趣创建一种形式的 RandomWalk,使用 DNA 序列来创建步行(例如 T = up,A = down 等)。我已经创建了代码,但是我想知道是否可以为 4 个基本字母中的每一个分配一种颜色,而不是最终的绘图图只有一种颜色?

import matplotlib.pyplot as plt 

x = y = 0

x_values = [0]
y_values = [0]

dna_seq =  ('GGACTTCCCTATGGTGCTAACAAAGAGGCAGACAAA')


for base in dna_seq:
    if base == 'T':
        y += 1
    elif base == 'A':
        y -= 1
    elif base == 'G':
        x += 1
    elif base == 'C':
        x -= 1 
    x_values.append(x)
    y_values.append(y)
    
            

fig, ax = plt.subplots()
ax.plot(x_values, y_values, c='g')
plt.show()    

标签: matplotlibrandom-walk

解决方案


您可以使用字典来创建颜色列表。然后,使用 plt.plot 绘制线条,使用 plt.scatter 绘制彩色点:

修改后的代码版本:

import matplotlib.pyplot as plt 

x = y = 0

x_values = [0]
y_values = [0]

color_lookup = {'A': 'red',
         'T':'green',
         'G': 'blue',
         'C': 'orange'}


dna_seq =  ('GGACTTCCCTATGGTGCTAACAAAGAGGCAGACAAA')

colors = ['k'] # initialise starting point with black

for base in dna_seq:
    if base == 'T':
        y += 1
    elif base == 'A':
        y -= 1
    elif base == 'G':
        x += 1
    elif base == 'C':
        x -= 1 
    x_values.append(x)
    y_values.append(y)
    colors.append(color_lookup[base])
    
            

fig, ax = plt.subplots()
ax.plot(x_values, y_values, c='k')
ax.scatter(x_values, y_values, c=colors)
plt.show()    

在此处输入图像描述


推荐阅读