Issue
I have a file (file.xvg), of which I plot the result using matplotlib and numpy (version Python 3.9.12). here my script:
import matplotlib.pyplot as plt
import numpy
import numpy as np
from scipy import signal
x, y = numpy.loadtxt("file.xvg", unpack=True)
fig = plt.figure(figsize=(13,8))
ax = fig.add_subplot(111)
ax.plot(x, y, color="k", linestyle='solid', linewidth=0.8)
ax.set_xlabel("Times (ps)", fontweight='bold', fontsize = 18, labelpad=3)
ax.set_ylabel("Pressures (bar)", fontweight='bold', fontsize = 18, labelpad=3)
plt.show()
and the file.xvg
0.0000000 0.0287198 0.0100000 0.0655187 0.0200000 0.0665948 0.0300000 0.0676697 0.0400000 0.0797021 0.0500000 0.0883750 0.0600000 0.0824649 0.0700000 0.0726798 0.0800000 0.0749663 0.0900000 0.0746549 0.1000000 0.0767466 0.1100000 0.1051620 0.1200000 0.0846607 0.1300000 0.0746683 0.1400000 0.0744862 0.1500000 0.0913541 0.1600000 0.0844304 0.1700000 0.0750595 0.1800000 0.0783450 0.1900000 0.0869718 0.2000000 0.0969575 0.2100000 0.0924280 0.2200000 0.0759971 0.2300000 0.0704025 . . .
I wanted to plot the running average as in the figure below:
The average value of the plot figure is 7.5 ± 160.5 bar
Solution
You have to calculate your running avg (selecting a window of values rang
) for both your x
and y
array:
x_avg = []
y_avg = []
rang = 10
for ind in range(len(y)-rang +1):
y_avg.append(np.mean(y[ind:ind+rang]))
x_avg.append(np.mean(x[ind:ind+rang]))
ax.plot(x_avg, r_avg, color="red", linestyle='solid', linewidth=0.8)
PS: what a throwback, is that GROMACS? :)
Answered By - imburningbabe
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.