使用Python在同一图中绘制两个.txt文件

时间:2016-09-28 06:11:58

标签: python matplotlib

我试图在同一个图中绘制两个.txt文件。我正在使用一个简单的Python脚本。

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

3 个答案:

答案 0 :(得分:2)

尝试以下方法:

 String json = "{ \"Id\": 123, \"FirstName\": \"fName\", \"LastName\": \"lName\" }";

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            Student student = serializer.Deserialize<Student>(json);

            List<Student> students=new List<Student>();
            students.Add(student);


            String serializedStudentList = serializer.Serialize(students);
            var d = serializedStudentList;
            List<Student> serializedstudents = serializer.Deserialize<List<Student>>(serializedStudentList);

,并提供:

screenshot

您正在为这两组数据重用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() 变量。

答案 1 :(得分: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')

答案 2 :(得分:1)

您从trap_error.txt文件重写了错误。使用以下代码来解决您的问题

System.Runtime.Serialization