这是我的gnuplot配置文件:
reset
set terminal png
set output "rp.png"
set title textcolor rgb "red" "R/P"
set yrange[0:110]
set xrange[0:110]
set xlabel "Rappel"
set ylabel "Précision"
set style data points
plot "test.dat" using 2:1 with linespoints
我希望能够在“ test.dat”的最后一行替换为“ filename”之类的东西,其中将传递“ filename”。
目前我只是做这个
FILE *gp;
if(WIN32)
{
cout<<"Win 32"<<endl;
gp=_popen("gnuplot", "w");
}
else
{
cout<<"pas win 32"<<endl;
gp=popen("gnuplot", "w");
}
if(gp == NULL)
{
fprintf(stderr, "Oops, I can't find %s.");
//exit(EXIT_FAILURE);
}
fprintf(gp, "load \"config\"\n");
fflush(gp);
pclose(gp);
但是我不知道如何传递参数...
提前谢谢
答案 0 :(得分:0)
通过这种方式,您可以完全控制所需的内容(抱歉,快速而肮脏,仅适用于Linux的代码):
#include <iostream>
#include <fstream>
#include <cstdlib>
int main()
{
std::ofstream f("myfile.plt");
f << "#!/usr/local/bin/gnuplot\n";
f << "reset\nset terminal pngcairo\n";
//... the rest of what is needed
std::string fn = "whatever.dat";
f << "plot \"" << fn << "\" using 2:1 with linespoints\n";
f.close();
std::system( "chmod u+x myfile.plt" );
std::system( "myfile.plt" );
}
(切换到pngcairo
终端,比png
产生更好的输出)。
答案 1 :(得分:0)
您可以设置一个包含文件名的变量:
fprintf(gp, "filename=\"%s\";load \"config\"\n", file_name);
,然后在您的Gnuplot脚本中重复使用它:
reset
set terminal png
set output "rp.png"
set title textcolor rgb "red" "R/P"
set yrange[0:110]
set xrange[0:110]
set xlabel "Rappel"
set ylabel "Précision"
set style data points
plot filename using 2:1 with linespoints