matplotlib - 查看不同颜色的 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()
解决方案
您可以使用字典来创建颜色列表。然后,使用 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()
推荐阅读
- ubuntu - 无法使用 JDK 10 在 Netbeans 8.2 上创建项目
- php - 在 PHP/HTML 中的“发布”方法之后获取选定下拉列表的值
- python - Python smartsql 编译插入语句
- python - Ipyparallel 和 numba (jit)
- javascript - 特定页面上的中间件 - NuxtJS
- javascript - 将焦点移动到组合框字段而不是 VuetifyJS 中的芯片
- django - 传单分组图层未显示在地图上
- angular - 有条件地展示一个孩子或另一个孩子
- c# - Entity Framework Core / SQLite:加入“扁平化”结果后的 GroupJoin
- c++ - 有没有办法定义一个快捷方式 elif 来替换 else if?