1

This is the following code I have for plotting a series of random points in gnuplot. I have no errors in gnuplot-iostream header.

#include <iostream>
#include <vector>
#include <random>
#include <numeric>

#include "gnuplot-iostream.h"

int main() {
    Gnuplot gp("\"C:\\Program Files\\gnuplot\\bin\\gnuplot.exe\"");

    std::random_device rd;
    std::mt19937 mt(rd());
    std::normal_distribution<double> normdist(0., 1.);

    std::vector<double> v0, v1;
    for (int i = 0; i < 1000; i++) {
        v0.push_back(normdist(mt));
        v1.push_back(normdist(mt));
    }
    std::partial_sum(v0.begin(), v0.end(), v0.begin());
    std::partial_sum(v1.begin(), v1.end(), v1.begin());

    gp << "set title 'graph of two random lines'\n";
    gp << "plot '-' with lines title v0," 
        << "'-' with lins title 'v1'\n";
    gp.send(v0);
    gp.send(v1);

    std::cin.get();
}

In console I am getting the following output:

gnuplot> -7.293891473275246
         ^
         line 1001: invalid command


gnuplot> -6.2938345608263884
         ^
         line 1001: invalid command

Thank you very much for assisting. I am new to gnuplot and appreciate it!

1 Answer 1

2

For debugging I used 5 points instead of 1000, so it was easier to see the first error:

line 6: undefined variable: v0

It turns out that the title of the first plot must be quoted:

gp << "plot '-' with lines title 'v0',"

There is also a typo in the second one, it must be lines instead of lins:

    << "'-' with lines title 'v1'\n";
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you so much! This fixed everything!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.