3

次のような csv ファイルがあります。

Axis [m],Channel 1 [],Channel 2 [],Channel 3 [],Channel 4 []
0,11.87772978,65.2269997,7.103221875,6.324708559
1.34E-08,17.65605321,75.09093444,8.309697828,14.87524308
2.69E-08,15.19155521,77.12878487,12.31291774,9.457125362
4.03E-08,23.85118853,88.76138941,20.10571063,8.041540228
5.38E-08,18.77440037,87.15681445,14.53884458,13.36609689
6.72E-08,19.54841939,117.9766076,16.87197928,18.50902666
8.06E-08,33.37595782,102.2086995,40.59474863,9.451430137

matplotlib を使用して最初の 2 列の値をプロットしたい

次のコードがあります。

import matplotlib.pyplot as plt
import pylab, csv

x=[]
y=[]
with open("test.csv","rU") as f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
                if re.search("\d",row[0]):
                    x.append(float(row[0]))
                    y.append(float(row[1]))
fig = plt.figure()
ax1 = fig.add_subplot(121)

ax1.scatter(x,y,color='blue',s=5,edgecolor='none')
ax1.set_aspect(1./ax1.get_data_ratio()) # make axes square

pylab.savefig('test.jpg')

ただし、これはすべての x 値 (合計 122 個の値) を 0 の周りの線としてプロットします (私が期待する曲線としてではありません)例については、こちらを参照してください。これは、x 軸のスケールがすべてのデータを 0 付近にまとめているためだと思います。小さい数値を処理するには、x 軸のスケールを変更する必要があると思いますか?
いつものように、どんな助けでも大歓迎です!

4

2 に答える 2

5

ax1への軸に対して非常に強力なハンドルを既に使用していset_aspectます。

このハンドルを使用して軸の制限を設定することもできます。

ax1.set_xlim(0,3)
ax1.set_ylim(0,3)

Axes ハンドルには、さらに多くのプロパティがあります。IPython、特に IPython ノートブックをインストールすることをお勧めします。次に、次のように入力するだけで、ハンドルが持つプロパティをいつでも確認できます。

ax1.

(ax1 ドット) を押してから TAB キーを押します。

于 2013-07-02T06:40:08.077 に答える
4

このようにpyplots軸を変更できます

plt.axis([min(x), max(x), min(y), max(y)])

切り貼り例はこちら

from StringIO import StringIO
import matplotlib.pyplot as plt
import pylab, csv, re

data = '''0,11.87772978,65.2269997,7.103221875,6.324708559
1.34E-08,17.65605321,75.09093444,8.309697828,14.87524308
2.69E-08,15.19155521,77.12878487,12.31291774,9.457125362
4.03E-08,23.85118853,88.76138941,20.10571063,8.041540228
5.38E-08,18.77440037,87.15681445,14.53884458,13.36609689
6.72E-08,19.54841939,117.9766076,16.87197928,18.50902666
8.06E-08,33.37595782,102.2086995,40.59474863,9.451430137'''

x=[]
y=[]

file_ = StringIO(data)

reader = csv.reader(file_, delimiter=',')
for row in reader:
        if re.search("\d",row[0]):
            x.append(float(row[0]))
            y.append(float(row[1]))

print x
print y

plt.plot(x, y)
plt.axis([min(x), max(x), min(y), max(y)])
plt.show()

そしてここに出力があります

ここに画像の説明を入力

于 2013-07-02T03:25:45.823 に答える