如何解决如何将具有四种不同蛋白质序列的四个子图组合成一个图形?
如何将四个子图合成一个图形并将其保存到我的桌面?我在输入提示时遇到问题,您可以在其中插入 4 个不同的蛋白质序列
import numpy as np
from matplotlib import pyplot as plt
protein_input = input('Protein Sequence: ')
protein_nospace = protein_input.strip()
# plot protein frequency and print graph
x_values = ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y']
counts = defaultdict(int)
for aa in protein_nospace:
if aa in x_values:
counts[aa] += 1
else:
counts[aa] = 1
y_values = np.array([v for v in counts.values()])
plt.figure()
plt.bar(x_values,y_values)
plt.title('Amino acid Frequencies')
plt.xlabel('Amino Acids')
plt.ylabel('Frequency')
plt.show()
解决方法
您可以为每个蛋白质创建一个子图。 Matplotlib object-oriented interface 有助于将所有内容写入其子图中。 plt.savefig
将绘图保存到文件中。
一般来说,通过交互式会话阅读这种类型的输入并不是一个好主意。这样一来,您就无法轻松检查错误,也无法在以后轻松引用输入来验证绘图的创建方式。
对于短脚本和短输入,最简单的方法是将您的输入复制粘贴到代码中。然后保存代码以备后用。对于更长的输入,或者要与其他输入集具有相同的图形,您可以仅将字符串保存在单独的文件中。
下面的代码现在显示了如何以交互方式读取输入。 (在评论中有一个带有“硬编码”输入的版本。)
from matplotlib import pyplot as plt
from collections import defaultdict
protein_input_list = []
while True:
protein_input = input('Enter next Protein Sequences (empty input to stop):')
protein_nospace = protein_input.strip()
if len(protein_nospace) == 0:
break
else:
protein_input_list.append(protein_nospace)
'''
protein_input_list = ['ABABDEADWDSWEFAECD','DEFSDMDSLHEWVOIHWEAAEHRG','HIWEORMLSDAWEEFWEFWEEWJK','JLSSFSFLIWIJOWHOE']
'''
fig,axes = plt.subplots(ncols=len(protein_input_list),figsize=(15,5))
for index,( ax,protein_nospace) in enumerate( zip(axes.ravel(),protein_input_list)):
x_values = ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y']
counts = defaultdict(int)
for aa in protein_nospace:
if aa in x_values:
counts[aa] += 1
else:
counts[aa] = 1
ax.bar(counts.keys(),counts.values())
ax.set_title(f'Amino acid Frequencies {index+1}')
ax.set_xlabel('Amino Acids')
ax.set_ylabel('Frequency')
plt.savefig('Amino acid Frequencies.png')
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。