0

2列のASCIIファイルを読み取り、1Dプロットを生成する次のスクリプトがあります。グラフにはいくつかのピークがあります。私が望むのは、最初のピーク 1、2 番目のピーク 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()
4

1 に答える 1

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')

開始するには、それを試してください。

于 2013-03-05T15:23:01.710 に答える