C++和gnuplot

Mar*_*rrù 9 c++ gnuplot

这是我的第一篇文章,我对C++和一般编译都很新手.

我正在编写一个程序,需要绘制一些图形.该程序创建一个.dat文件,然后我应该打开gnuplot并写入' .dat'.没关系.

有没有办法让gnuplot自动打开并向我展示我需要的情节?我应该在代码中使用一些system()函数来调用gnuplot但是如何让他绘制我需要的东西呢?

对不起我的非完美英语:s

无论如何,感谢您的关注!

Mr.*_*Ree 8

根据您的操作系统,您可能可以使用popen(). 这将让你产生一个gnuplot进程,只需像任何其他FILE*一样写入它.

如果您有要绘制的数据点,可以使用" - "...选项内联传递它们.同样,您可能希望探索设置数据样式点/线/线点/等选项.


没有暂停或持续,gnuplot将在输入结束时终止.在您的示例中,这将是到达文件末尾的时间.


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

set terminal png small
set output "filename.png"
Run Code Online (Sandbox Code Playgroud)

设置终端有很多选择.Png通常在那里.如果没有,也许是gif,tiff或jpeg?

注意覆盖文件!

您可能希望使用set size 2,2来制作更大的图形.某些设置的终端变体也允许您指定大小.


And*_*ner 5

我今天也在学习这个.这是我做的一个小例子.

#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;
}
Run Code Online (Sandbox Code Playgroud)

保存为plot.cpp并使用g ++编译:

g++ plot.cpp -o plot
Run Code Online (Sandbox Code Playgroud)

运行该程序以创建.dat文件:

./plot
Run Code Online (Sandbox Code Playgroud)

将以下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 ""
Run Code Online (Sandbox Code Playgroud)

使用gnuplot运行脚本以生成.svg文件:

gnuplot plot.plt
Run Code Online (Sandbox Code Playgroud)

得到的图将在plot.svg中.如果省略指定输出的前几行,它将在窗口中呈现.玩得开心!