2012-06-28 6 views

答えて

17

あなたのファイルはこのようになりますと、test.txtの(スペース区切り)と命名されているとします

1 2 
3 4 
5 6 
7 8 

その後:

#!/usr/bin/python 

import numpy as np 
import matplotlib.pyplot as plt 

with open("test.txt") as f: 
    data = f.read() 

data = data.split('\n') 

x = [row.split(' ')[0] for row in data] 
y = [row.split(' ')[1] for row in data] 

fig = plt.figure() 

ax1 = fig.add_subplot(111) 

ax1.set_title("Plot title...")  
ax1.set_xlabel('your x label..') 
ax1.set_ylabel('your y label...') 

ax1.plot(x,y, c='r', label='the data') 

leg = ax1.legend() 

plt.show() 

Example plot:

を私はgallery of plots on the matplotlibサイトを閲覧役立つことを見つけます伝説と軸のラベルを理解する

+1

は、なぜあなたは直接の代わりに、データを解釈しますnp.loadtxtを使用していますか? – cge

+0

np.loadtxtで大したことは一度もありませんでしたが(通常は入力ファイルが厄介です)、この単純な例ではおそらくうまくいくでしょう。 – tbc

+0

デリミタがスペースに設定されたcsvモジュールを使用しないのはなぜですか? – Dhara

29

これは、matplotlibではなくpylab(matplotlibに同梱)を使用すると比較的簡単です。 [(ファイル名1、ラベル1)、(ファイル名2、ラベル2)、...]のように、ファイル名と凡例名のリストから始めます。あなたはまた、ポイントにラインから変更するためには、plotコマンドのFMT =「O」のようなものを追加したい場合があります

import pylab 

datalist = [ (pylab.loadtxt(filename), label) for filename, label in list_of_files ] 

for data, label in datalist: 
    pylab.plot(data[:,0], data[:,1], label=label) 

pylab.legend() 
pylab.title("Title of Plot") 
pylab.xlabel("X Axis Label") 
pylab.ylabel("Y Axis Label") 

:次に、あなたは、次のようなものを使用することができます。デフォルトでは、ピラッブ付きmatplotlibはクリアしないで同じFigureにプロットするので、plotコマンドを複数回実行することができます。

+0

私を助けてくれてありがとう、しかし私はいくつかの問題に取り組んでいます。 "list_of_files"の目的は何ですか?また、 のpylab.plot(data [:、0]、data [:、1]、label = label)を入力すると が表示されます。この[]になります。あなたが私に助けてくれるなら、あなたに感謝してください。 – Hiren

+0

list_of_filesは、複数のファイルをプロットする場合に使用します。list_of_files = [(ファイルへのパス1、ラベル1)、(ファイル2へのパス、ラベル2) 。]、コードはそれらのラベルを使って同じプロットにそれらのすべてをプロットします。あなたが得られる出力は、通常の出力です。プロットは別のウィンドウに表示されるはずですか?そうでなければ、matplotlibのインストールに問題があります。あなたはipythonを使っていますか?もしそうなら、あなたはipythonノートブックか単に標準のipythonを使っていますか? – cge

+0

ありがとう、私は今それを作ることができます。私は1つの問題がありますが、保存されたプロットは新しいグラフに古いグラフがあり、新しいグラフを表示するにはpython IDLEを再起動するしかありません。それはなぜですか?私は複数のグラフを持っているが、最後の図/グラフから前のグラフではない。 – Hiren

2

私はプロットに

from matplotlib import pyplot; 
from pylab import genfromtxt; 
mat0 = genfromtxt("data0.txt"); 
mat1 = genfromtxt("data1.txt"); 
pyplot.plot(mat0[:,0], mat0[:,1], label = "data0"); 
pyplot.plot(mat1[:,0], mat1[:,1], label = "data1"); 
pyplot.legend(); 
pyplot.show(); 
  1. ラベルがあなたが(ショーの前に、可能な限りのデータポイントとして多くのシリーズをプロットすることができ伝説
  2. 上に表示される文字列であるだろう最も簡単な方法を)感じますそれらのすべてが同じグラフにある これは簡単なグラフをプロットする簡単な方法です。 genfromtxtの他のオプションについては、urlに行ってください。作品plotfile`
関連する問題