这是我的第一篇文章,我对C++和一般编译都很新手.
我正在编写一个程序,需要绘制一些图形.该程序创建一个.dat文件,然后我应该打开gnuplot并写入' .dat'.没关系.
有没有办法让gnuplot自动打开并向我展示我需要的情节?我应该在代码中使用一些system()函数来调用gnuplot但是如何让他绘制我需要的东西呢?
对不起我的非完美英语:s
无论如何,感谢您的关注!
根据您的操作系统,您可能可以使用popen(). 这将让你产生一个gnuplot进程,只需像任何其他FILE*一样写入它.
如果您有要绘制的数据点,可以使用" - "...选项内联传递它们.同样,您可能希望探索设置数据样式点/线/线点/等选项.
没有暂停或持续,gnuplot将在输入结束时终止.在您的示例中,这将是到达文件末尾的时间.
要生成(写入)输出文件(图形),请使用:
set terminal png small set output "filename.png"
设置终端有很多选择.Png通常在那里.如果没有,也许是gif,tiff或jpeg?
注意覆盖文件!
您可能希望使用set size 2,2来制作更大的图形.某些设置的终端变体也允许您指定大小.
我今天也在学习这个.这是我做的一个小例子.
#include#include using namespace std; int main(int argc, char **argv) { ofstream file("data.dat"); file << "#x y" << endl; for(int i=0; i<10; i++){ file << i << ' ' << i*i << endl; } file.close(); return 0; }
保存为plot.cpp并使用g ++编译:
g++ plot.cpp -o plot
运行该程序以创建.dat文件:
./plot
将以下gnuplot脚本保存为plot.plt:
set terminal svg enhanced size 1000 1000 fname "Times" fsize 36 set output "plot.svg" set title "A simple plot of x^2 vs. x" set xlabel "x" set ylabel "y" plot "./data.dat" using 1:2 title ""
使用gnuplot运行脚本以生成.svg文件:
gnuplot plot.plt
得到的图将在plot.svg中.如果省略指定输出的前几行,它将在窗口中呈现.玩得开心!