做动力学模拟分析时,xvg文件画图常用origin,当分析的文件多时,每个xvg文件都需要画图,或者不同模拟需要比较时也通过图比较,再手动画图让人比较焦躁,所以就在网上查询利用python画图。
其中xvg文件经过 grep 命令处理,处理后的disatance/54HN-363010.xvg可以直接被python读取
grep -v '@' 54HN-363010.xvg | grep -v '#' > disatance/54HN-363010.xvg
import matplotlib.pyplot as plt
X, Y = [], []
for line in open('54HN-363O10.xvg','r'):
values = [float(s) for s in line.split()]
X.append(values[0])
Y.append(values[1])
plt.plot(X, Y, color='k', linestyle='dashed',marker='o')
plt.title("54VAL-UNK distance", fontsize=14)
plt.xlabel("Time (ps)")
plt.ylabel("54VAL-HN_UNK-O10 (nm)")
plt.show()
得到下面这样的图:
import matplotlib.pyplot as plt
filename = '54HN-363O10.xvg'
filename1 = '223HH-363O8.xvg'
X, Y = [], []
X1, Y1 = [], []
with open(filename, 'r') as f:
lines = f.readlines()
for line in lines:
value = [float(s) for s in line.split()]
X.append(value[0])
Y.append(value[1])
with open(filename1, 'r') as f1:
lines = f1.readlines()
for line in lines:
value = [float(s) for s in line.split()]
X1.append(value[0])
Y1.append(value[1])
plt.plot(X, Y, color='black', linestyle='dashed', marker='o', label='54VAL-UNK')
plt.plot(X, Y1, color='red', linestyle='dashed', marker='o', label='223HH-UNK')
plt.legend(loc= 'upper right')
plt.xlabel("Time (ps)")
plt.ylabel("Distance (nm)")
plt.show()
得到的图是:
将两个xvg进行比较的python脚本比较笨重,还没想出怎么可以读取两个文件,所以就直接粘贴复制前面的命令,执行两次。后面有优化后的命令在补充到里面。
[参考博文]
(https://blog.csdn.net/Mr_Cat123/article/details/78828634)(https://blog.csdn.net/qq_35077107/article/details/97619685)