Gnuplot, как известно, интерактивная программа. Также в ней существует возможность создавать скрипты, которые можно запускать с командного интепретатора операционной системы. Иногда бывает удобно "заворачивать" эти команды в программу с/с++. Далее в тексте приведены две таких программы. Кто умеет пользоваться Gnuplot-ом без труда сможет изменить их текст для своих нужд. Первая програма выполняет стандартную задачу постройки 2D-графиков, а вторая строит "карту" из данных, представленых матрицей. В обоих случаях вывод происходит не окно, а в отдельный jpeg файл.
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
int main(){
FILE* gnuplotpipe;
string command;
gnuplotpipe = popen("gnuplot -persist","w");
if(!gnuplotpipe)
cerr<<("there are no gnuplot");
command =
"set terminal jpeg size 3400,2300 font 'Times New Roman-bold,48';"
"set output 'graphic.jpg';"
"plot "
"'data1.dat' u 1:2 w l t '1', "
"'data2.dat' u 1:2 w l t '2', "
"'data3.dat' u 1:2 w l t '3'; ";
fprintf(gnuplotpipe,"%s",command.c_str());
fflush(gnuplotpipe);
fprintf(gnuplotpipe, "exit\n");
pclose(gnuplotpipe);
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
int main(){
FILE* gnuplotpipe;
string command;
gnuplotpipe = popen("gnuplot -persist","w");
if(!gnuplotpipe)
cerr<<("there are no gnuplot");
command =
"set terminal jpeg size 3400,2300 font 'Times New Roman-bold,48';"
"set output 'graphic.jpg';"
"set pm3d map;"
"set pm3d at b;"
"set pm3d interpolate 0,1;"
"set pm3d corners2color c1;"
"set palette defined (0 \"blue\", 10 \"cyan\", 30 \"green\", 45 \"yellow\", 70 \"orange\", 100 \"red\");"
"set cbrange [0:1];"
"set ticslevel 0;"
"splot \"matrixData.dat\" matrix;";
fprintf(gnuplotpipe,"%s",command.c_str());
fflush(gnuplotpipe);
fprintf(gnuplotpipe, "exit\n");
pclose(gnuplotpipe);
return 0;
}