C++;和gnuplot 这是我的第一篇文章,我是C++上的新手,编译一般。

C++;和gnuplot 这是我的第一篇文章,我是C++上的新手,编译一般。,c++,gnuplot,C++,Gnuplot,我正在编译一个程序,需要绘制一些图表。程序创建一个.dat文件,然后我应该打开gnuplot并写入plot'.dat'。那很好 有没有办法让gnuplot自动打开并显示我需要的绘图?我应该在代码中使用一些system()函数来调用gnuplot,但是我如何才能让他绘制出我所需要的呢 对不起,我的英语不是很好 无论如何,谢谢你的关注 是的,你可以。您可以创建一个文件,该文件包含您本应键入的命令,以设置绘图并打开从该文件运行的gnuplot。有一篇文章解释了怎么做。您还可以输出到EPS或其他图形输出

我正在编译一个程序,需要绘制一些图表。程序创建一个.dat文件,然后我应该打开gnuplot并写入plot'.dat'。那很好

有没有办法让gnuplot自动打开并显示我需要的绘图?我应该在代码中使用一些system()函数来调用gnuplot,但是我如何才能让他绘制出我所需要的呢

对不起,我的英语不是很好


无论如何,谢谢你的关注

是的,你可以。您可以创建一个文件,该文件包含您本应键入的命令,以设置绘图并打开从该文件运行的gnuplot。有一篇文章解释了怎么做。您还可以输出到EPS或其他图形输出格式,并使用另一个读取文件的小部件显示绘图。

有时,这很容易

    gnuplot file
其中,file既不是数据文件,也不是结果文件,而是包含要在命令行中键入的命令的文件。只需在那里输入您所需的命令(您拥有的常量文件或生成的常量文件)。
执行该文件中的所有命令后,gnuplot退出。

您可能需要设置终端类型。请阅读gnuplot文档

您可能需要在命令中使用“-persist”标志。我知道,在*nix系统上,如果您希望在gnuplot进程完成并退出后打印窗口保持不变,则需要此标志

gnuplot-persist commands.gp


此外,您可以在文件中放入任意数量的gnuplot命令。在这方面,该文件的行为有点像批处理脚本。

您可能需要添加一行

pause -1
这将显示绘图,直到按下回车键。

您可能看到的是,gnuplot会在绘图显示之前运行并退出。

根据您的操作系统,您可能可以使用它生成一个gnuplot进程,然后像其他文件一样写入它*

如果您有要打印的数据点,则可以将其与打印“-”一起内联传递。。。选项类似地,您可能需要探索设置数据样式点/线/线点/etc选项


在不暂停或持久化的情况下,gnuplot将在输入流结束时终止。在您的示例中,这将是到达文件末尾时


要生成(写入)输出文件(图形),请使用:

有很多选项可以设置终端。Png通常在那里。如果不是,可能是gif、tiff或jpeg

小心覆盖文件


您可能需要使用“设置大小2,2”来生成更大的图形。一些设置终端变体还允许您指定大小。

我今天也在学习这一点。这是我编的一个小例子

#include <iostream>
#include <fstream> 
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;
}
运行程序以创建.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中。如果省略指定输出的前几行,它将在窗口中渲染。玩得开心

哦,好的,对不起,我应该如何修改标题?太好了,谢谢。现在可以了!剩下的唯一问题是,它显示了一个名为Gnuplot Pause的窗口,等待用户单击ok。问题是它就在绘图上方:D,但没关系,我很满意:D thanx againThanx这是我一直在寻找的完美解决方案!不要忘记
-persist
选项(例如
文件*fp=popen(“gnuplot-persist”,“w”);
),以保留由gnuplot进程生成的图形窗口(例如,在关闭时使用
pclose(fp);
)。
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 plot.plt