2016-09-28 5 views
0

同じ図の中に2つの.txtファイルをプロットしようとしています。私はそれのためのシンプルなPythonスクリプトを使用しています。Pythonを使用して同じFigure内に2つの.txtファイルをプロットする

import sys 
import os 
import numpy 
import matplotlib.pyplot as plt 
from pylab import * 

trap_error = 'trap_error.txt' 

N , error = numpy.loadtxt(trap_error, unpack =True) 

monte_error = 'monte_carlo_error.txt' 

points, Integral, error = numpy.loadtxt(monte_error, unpack =True) 

plt.loglog(N,error, 'o') 

plt.loglog(points,error, 's') 


plt.xlabel('Number of equally spaced points N') 
plt.ylabel('error') 
plt.legend(['trapezoid rule error', 'monte carlo error'], loc = 'upper right') 
plt.title('Comparison of error in Trapezoid rule and Monte Carlo rule of Numerical integration') 
plt.show() 

出力図には、モンテカルロデータのみが表示されますが、台形データのトレースは表示されません。これらの2つのデータファイルの大きさのオーダはほぼ同じなので、他のデータを同じ図で見ることができない理由はわかりません。私は便宜のためにデータファイルも共有しています。

#points Integral error  # monte_carlo_error.txt 
    2   1.400697 0.170100 
    4   1.415539 0.155258 
    8   1.394789 0.176008 
    16   1.444948 0.125848 
    32   1.501825 0.068971 
    64   1.577106 0.006309 
    128  1.558217 0.012580 
    256  1.563389 0.007407 
    512  1.570139 0.000657 
    1024  1.576300 0.005504 
    2048  1.585733 0.014937 
    4096  1.577355 0.006558 
    8192  1.577293 0.006497 
    16384  1.575404 0.004607 
    32768  1.572333 0.001536 
    65536  1.571028 0.000232 
    131072  1.570317 0.000479 
    262144  1.570318 0.000478 
    524288  1.570867 0.000070 
    1048576 1.571311 0.000515 

#N   error   #trap_error.txt 
2   0.629204 
4   0.472341 
8   0.243747 
16   0.123551 
32   0.062155 
64   0.031166 
128   0.015604 
256   0.007807 
512   0.003905 
1024   0.001953 
2048   0.000977 
4096   0.000487 
8192   0.000244 
16384  0.000124 
32768  0.000064 
65536  0.000040 
131072  0.000044 
262144  0.000087 
524288  0.000018 
1048576  0.000615 

答えて

2

は、以下のことを試してみてください。

import sys 
import os 
import numpy 
import matplotlib.pyplot as plt 
from pylab import * 

trap_error = 'trap_error.txt' 
N, error1 = numpy.loadtxt(trap_error, unpack=True) 

monte_error = 'monte_carlo_error.txt' 
points, Integral, error2 = numpy.loadtxt(monte_error, unpack=True) 

plt.loglog(N, error1, 'o') 
plt.loglog(points, error2, 's') 

plt.xlabel('Number of equally spaced points N') 
plt.ylabel('error') 
plt.legend(['trapezoid rule error', 'monte carlo error'], loc = 'upper right') 
plt.title('Comparison of error in Trapezoid rule and Monte Carlo rule of Numerical integration') 
plt.show() 

与える:あなたは、データの両方のセットのためのerror変数を再利用した

screenshot

2

あなたは、変数errorを上書きしても、二度同じ事をプロットしている。

N , error = numpy.loadtxt(trap_error, unpack =True) 

、その後

points, Integral, error = numpy.loadtxt(monte_error, unpack =True) 

は、変数に異なる名前を使用すると、あなたは問題ないはずです。例:

N , error_trap = numpy.loadtxt(trap_error, unpack =True) 

points, Integral, error_monte = numpy.loadtxt(monte_error, unpack =True) 

またプロットを変更するには、するためのコマンド:

plt.loglog(N,error_trap, 'o') 

plt.loglog(points,error_monte, 's') 
1

あなたは書き直しエラーtrap_error.txtファイルから。下記のコードを使用して問題を解決してください

trap_error = 'trap_error.txt' 
N , error1 = numpy.loadtxt(trap_error, unpack =True) 
monte_error = 'monte_carlo_error.txt' 
points, Integral, error2 = numpy.loadtxt(monte_error, unpack =True) 
plt.loglog(N,error1, 'o') 
plt.loglog(points,error2, 's') 
関連する問題