2016-09-28 107 views
0

我試圖在同一圖中繪製兩個.txt文件。我正在使用一個簡單的Python腳本。使用Python在同一圖中繪製兩個.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() 

輸出圖只顯示蒙特卡洛數據,沒有梯形數據的軌跡。這兩個數據文件的數量級幾乎相同,所以我不明白爲什麼我不能看到同一圖中的其他數據。爲了方便起見,我也在共享數據文件。

#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() 

,並提供:

screenshot

你被重用error變量這兩組數據。

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') 
相關問題