1

たとえば、5 列のデータを含むテキスト ファイルがあります。テキストファイルからのデータの例を次に示します-

   715.10685    -0.006153   -0.004829   -0.002161   0.000994    0.004024
   715.589053   0.000344    0.001608    0.004192    0.007262    0.010277
   716.071255   0.009477    0.010658    0.013193    0.016265    0.019321
   716.553458   0.021954    0.023053    0.025522    0.02855     0.031579
   717.035661   0.03933     0.040322    0.042648    0.045625    0.048713
   717.517864   0.065858    0.066748    0.068937    0.071936    0.075013
   718.000067   0.105093    0.105611    0.107231    0.109831    0.112457
   718.48227    0.159793    0.159685    0.160404    0.162183    0.16411
   718.964473   0.227552    0.226183    0.22505     0.224954    0.224974
   719.446675   0.280709    0.277399    0.273711    0.271167    0.268747
   719.928878   0.287966    0.284241    0.280152    0.277131    0.274246
   720.411081   0.2579      0.255127    0.252152    0.249984    0.24799
   720.893284   0.217396    0.215636    0.214007    0.213105    0.21248
   721.375487   0.183229    0.182397    0.182068    0.182365    0.182748
   721.85769    0.156936    0.156647    0.157027    0.157882    0.158674
   722.339893   0.13635     0.136406    0.137233    0.138479    0.139685
   722.822096   0.120752    0.121058    0.122156    0.123668    0.125183
   723.304298   0.107352    0.107843    0.109138    0.110859    0.112598
   723.786501   0.095212    0.0959      0.097439    0.099493    0.101428
   724.268704   0.085383    0.086165    0.08792     0.090225    0.092336
   724.750907   0.0776      0.078475    0.080518    0.083035    0.085425
   725.23311    0.070816    0.071864    0.074134    0.076913    0.07958
   725.715313   0.065264    0.066499    0.068969    0.072023    0.074953
   726.197516   0.06251     0.063919    0.06673     0.070063    0.073333
   726.679718   0.062564    0.064118    0.067235    0.07086     0.074526
   727.161921   0.064957    0.066703    0.070112    0.074137    0.078255
   727.644124   0.071889    0.073893    0.07768     0.082185    0.086759
   728.126327   0.084432    0.086715    0.090869    0.095897    0.100956
   728.60853    0.102835    0.105454    0.110048    0.115624    0.121192
   729.090733   0.129785    0.132514    0.137395    0.143102    0.148829
   729.572936   0.166336    0.168793    0.173371    0.178551    0.183697
   730.055139   0.209726    0.211157    0.214009    0.217215    0.220028

テキストファイルを読み取り、それに応じてデータをプロットできる次のスクリプトがあります。

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('peak.txt', dtype = float)

a = [row[0] for row in data]
b = [row[1] for row in data]
c = [row[2] for row in data]
d = [row[3] for row in data]
e = [row[4] for row in data]

fig = plt.figure(figsize=(6,8))
ax = fig.add_subplot(111)
ax.plot(a,b,a,c,a,d,a,e)

plt.show()

互いに重なり合う 4 つのプロットを生成します。はっきりと見えるように、それらを等間隔に離したいと思います。おそらくもっともらしい方法の 1 つは、すべてのプロットで最小値を探し、特定の増分を追加して、プロットが等距離に分離されるようにすることです。ひょっとしたら、他にも方法があるかもしれません。Pythonでこれをどのように達成できるかわかりません。誰かが私を少し助けてくれませんか。ありがとうございました。

4

2 に答える 2

4

データを NumPy 配列として読み込むため、内包表記をリストする必要はありません。それに応じてスライスすると、物事が簡単になります。

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('peak.txt', dtype = float)

fig = plt.figure(figsize=(6,8))
ax = fig.add_subplot(111)

for i in range(1, data.shape[1]):
    y = data[..., i] + 0.1*i 
    ax.plot(data[..., 0], y)

plt.show()

これdata[..., 0]は、サンプル コードのnp.array(a)andとdata[..., 1]同じです。np.array(b)ab

ここに画像の説明を入力

于 2013-06-14T13:12:03.930 に答える
1

単純にグラフごとに異なるサブプロットを作成し、それらを垂直に積み上げてみませんか?

x = data[:, 0]
fig, axes = plt.subplots(data.shape[1]-1, 1, sharex=True)
axes = (axes,) if n == 1 else axes
for j, ax in enumerate(axes):
    ax.plot(x, data[:, j+1])
于 2013-06-14T13:13:56.117 に答える