27

異なるディレクトリから複数のテキスト ファイルを開き、それらを凡例付きの 1 つのグラフにプロットするにはどうすればよいですか?

4

3 に答える 3

30

matplotlibの代わりにpylab(matplotlibに含まれている)を直接使用する場合、これは比較的簡単です。[('ファイル1の名前'、'ラベル1')、('ファイル2の名前'、'ラベル2')、...]のようなファイル名と凡例名のリストから始めます。次に、次のようなものを使用できます。

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

また、線から点に変更するために、fmt='o'のようなものをplotコマンドに追加することもできます。デフォルトでは、pylabを使用したmatplotlibは、クリアせずに同じ図にプロットするため、plotコマンドを複数回実行するだけで済みます。

于 2012-06-28T16:55:14.547 に答える
20

ファイルが次のようになり、名前が 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()

プロット例:

matplotlib サイトのプロットのギャラリーを参照すると、凡例と軸ラベルを理解するのに役立ちます。

于 2012-06-28T16:49:07.280 に答える
6

最も簡単な方法は

 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. label は凡例に表示される文字列です
  2. show() の前にできるだけ多くの一連のデータ ポイントをプロットして、それらすべてを同じグラフにプロットできます。これは、単純なグラフをプロットする簡単な方法です。genfromtxt の他のオプションについては、このURLにアクセスしてください。
于 2016-06-06T16:33:14.090 に答える