У меня есть данные, которые этот скрипт выводит в виде диаграммы рассеяния ID_all[:,0],ID_all[:,1]
, но я также хочу сохранить данные, использованные для диаграммы рассеяния, в виде двух столбцов (в виде файла CSV). Любая помощь действительно ценится! Заранее спасибо.
Подробнее:
Вот ссылка на исходные данные CSV, чтобы вы могли увидеть мою проблему (используются только первые два столбца).
https://www.dropbox.com/s/966iviv01tccv1k/contacts.csv?dl=0
Если вы построите входной CSV-файл (см. Рисунок 1), вы увидите, что он содержит только половину значений, которые мне нужны. Поэтому, когда я строю это с помощью приведенного ниже сценария, я транспонирую «матрицу», делая зеркальное отображение этой главной диагонали. Теперь с помощью этого сценария я рисую и оригинал, и транспонирование (рисунок 2), но я почему-то не могу понять, как просто выводить столбцы данных в дополнение к рисунку.
import numpy as np
import matplotlib.pyplot as plt
def parsefile(filename):
i = 0
print('Opening File')
try:
for line in open(filename):
line = line.split()
ID = np.hstack((int(line[0]), int(line[1])))
if i==0:
ID_list = ID
i+=1
if i>0:
ID_list = np.vstack((ID_list, ID))
print('File Opened')
return ID_list
except:
return ID_list
def get_scatter_data(ID_list):
ID_swapped1 = ID_list[:, 1]
ID_swapped2 = ID_list[:, 0]
ID_swapped = np.transpose([ID_swapped1.T, ID_swapped2.T])
N = np.max(ID_list)
diagonal = np.linspace(1,N,N)
ID_diagonal = np.transpose([diagonal.T,diagonal.T])
ID_all = np.vstack((ID_list,ID_swapped,ID_diagonal))
return ID_all
def plot_contactmap(ID_all, savefilename):
f = plt.figure()
plt.scatter(ID_all[:,0],ID_all[:,1], marker='o', s=0.01)
plt.axis('square')
plt.xlabel('Residue Number', fontsize = 14)
plt.ylabel('Residue Number', fontsize = 14)
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()
f.savefig(savefilename+'.png', bbox_inches='tight')
f.savefig(savefilename+'.pdf', bbox_inches='tight')
def main(filename, savefilename):
ID_list = parsefile(filename+'.csv')
ID_all = get_scatter_data(ID_list)
plot_contactmap(ID_all, savefilename)
main('contacts', 'test')