我有以下脚本,它读取两列的ascii文件并生成一维图。该图有几个峰值。我想要的是给所有峰值一个数字,如第一个峰值1,第二个峰值2等等。峰出现在X轴的等距位置。谁能告诉我如何在python中做到这一点。代码 -
from pylab import*
# Read the file.
f2 = open('d012_SAXS-recomb.txt', 'r')
# read the whole file into a single variable, which is a list of every row of the file.
lines = f2.readlines()[2:-100]
f2.close()
# initialize some variable to be lists:
x1 = []
y1 = []
# scan the rows of the file stored in lines, and put the values into some variables:
for line in lines:
p = line.split()
x1.append(float(p[0]))
y1.append(float(p[1]))
x = np.array(x1)
y = np.array(y1)
xlim(0.0,4.0)
# now, plot the data:
#subplot(211)
plt.plot(x, y, color='orange',linewidth=2.0, linestyle='-', label='Arabic - LPP''\nRoman - SPP''\nAsterisk - CHOL')
legend(loc='upper right')
xlabel('q')
ylabel('Intensity')
plt.show()
答案 0 :(得分:0)
这是一些找到第一个(最高)峰值的示例代码。 (顺便说一句,我在这里使用pylab,因此已经导入了plot和numpy模块)。
x = linspace(0,10,501)
y = exp(-0.2*x)*sin(x)
k = y.argmax()
plot(x,y)
text(x[k],y[k],'Peak1')
尝试开始使用。