bhjghjh bhjghjh - 2 months ago 6
Python Question

Plotting two .txt files in the same figure using Python

I am trying to plot two .txt files in the same figure. I am using a simple Python script for that.

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


The output figure only shows the monte carlo data, but no trace of trapezoid data. The order of magnitude of these two data file is almost same, so I do not understand why I cannot see the other data in the same figure. I am also sharing the datafiles for convenience.

#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

Answer

Try the following:

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

Giving:

screenshot

You were reusing the error variable for both sets of data.