matplotlib-cpp 连接数据集中的第一个点和最后一个点

matplotlib-cpp connecting first and last point in the data set

我能够 link matplotlib-cpp 到 visual studio。当我设置数据并绘制它时,除了第一个点和最后一个点被连接外,一切正常。我知道第一点和最后一点不一样。我的代码

#include <iostream>
#include <vector>
#include <cstdio>
#include "matplotlibcpp.h" 

namespace plt = matplotlibcpp;

int main()
{
    FILE *fp1;

    fp1 = fopen("data1.tmp", "r"); 
    int num = 139;
    std::vector<double> xval(num + 1), yval(num + 1);

    i = 0;
    while (i < num)
    {
        fscanf(fp1, "%lf \t %lf\n", &xval[i], &yval[i]);
        i++;
    }

    fclose(fp1);

    plt::figure_size(1200, 780);
    plt::plot(xval,y1val,"r--");
    plt::show();
}

我的数据列表

0.000000     0.000000
0.005000     0.005000
0.010000     0.010000
0.015000     0.014999
0.020000     0.019999
0.025000     0.024997
0.030000     0.029996
0.035000     0.034993
0.040000     0.039989
0.045000     0.044985
0.050000     0.049979
0.055000     0.054972
0.060000     0.059964
0.065000     0.064954
0.070000     0.069943
0.075000     0.074930
0.080000     0.079915
0.085000     0.084898
0.090000     0.089879
0.095000     0.094857
0.100000     0.099833
0.105000     0.104807
0.110000     0.109778
0.115000     0.114747
0.120000     0.119712
0.125000     0.124675
0.130000     0.129634
0.135000     0.134590
0.140000     0.139543
0.145000     0.144492
0.150000     0.149438
0.155000     0.154380
0.160000     0.159318
0.165000     0.164252
0.170000     0.169182
0.175000     0.174108
0.180000     0.179030
0.185000     0.183947
0.190000     0.188859
0.195000     0.193767
0.200000     0.198669
0.205000     0.203567
0.210000     0.208460
0.215000     0.213347
0.220000     0.218230
0.225000     0.223106
0.230000     0.227978
0.235000     0.232843
0.240000     0.237703
0.245000     0.242556
0.250000     0.247404
0.255000     0.252245
0.260000     0.257081
0.265000     0.261909
0.270000     0.266731
0.275000     0.271547
0.280000     0.276356
0.285000     0.281157
0.290000     0.285952
0.295000     0.290740
0.300000     0.295520
0.305000     0.300293
0.310000     0.305059
0.315000     0.309816
0.320000     0.314567
0.325000     0.319309
0.330000     0.324043
0.335000     0.328769
0.340000     0.333487
0.345000     0.338197
0.350000     0.342898
0.355000     0.347590
0.360000     0.352274
0.365000     0.356949
0.370000     0.361615
0.375000     0.366273
0.380000     0.370920
0.385000     0.375559
0.390000     0.380188
0.395000     0.384808
0.400000     0.389418
0.405000     0.394019
0.410000     0.398609
0.415000     0.403190
0.420000     0.407760
0.425000     0.412321
0.430000     0.416871
0.435000     0.421410
0.440000     0.425939
0.445000     0.430458
0.450000     0.434966
0.455000     0.439462
0.460000     0.443948
0.465000     0.448423
0.470000     0.452886
0.475000     0.457338
0.480000     0.461779
0.485000     0.466208
0.490000     0.470626
0.495000     0.475032
0.500000     0.479426
0.505000     0.483807
0.510000     0.488177
0.515000     0.492535
0.520000     0.496880
0.525000     0.501213
0.530000     0.505533
0.535000     0.509841
0.540000     0.514136
0.545000     0.518418
0.550000     0.522687
0.555000     0.526943
0.560000     0.531186
0.565000     0.535416
0.570000     0.539632
0.575000     0.543835
0.580000     0.548024
0.585000     0.552199
0.590000     0.556361
0.595000     0.560509
0.600000     0.564642
0.605000     0.568762
0.610000     0.572867
0.615000     0.576959
0.620000     0.581035
0.625000     0.585097
0.630000     0.589145
0.635000     0.593178
0.640000     0.597195
0.645000     0.601198
0.650000     0.605186
0.655000     0.609159
0.660000     0.613117
0.665000     0.617059
0.670000     0.620986
0.675000     0.624897
0.680000     0.628793
0.685000     0.632673
0.690000     0.636537
0.695000     0.640385
0.700000     0.644218 

这是结果

如何删除那条烦人的线?

这两行:

int num = 139;
std::vector<double> xval(num + 1), yval(num + 1);

创建向量 xvalyval 的 140 个 double 元素初始化为 0.

您只从数据集中加载了 139 个点,数据集中的第一个点是 (0,0);所以你的第一个(第 0 个)和最后一个(第 139 个)点确实相等。你可以试试:

int num = 139;
std::vector<double> xval(num), yval(num);