这是我的第一篇文章,我对C ++和一般的编译非常新手。

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

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

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

感谢您的关注!

有帮助吗?

解决方案

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

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


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


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

set terminal png small
set output "filename.png"

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

注意覆盖文件!

您可能希望使用 set size 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;
}

将其保存为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中。如果省略指定输出的前几行,它将在窗口中呈现。玩得开心!

有时它就像人们想象的那样容易

    gnuplot file

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

是的,你可以。您可以创建一个文件,其中包含您要输入的命令以设置绘图并打开从该文件运行的gnuplot。 此链接有一篇文章介绍了如何操作。您还可以输出EPS或其他图形输出格式,并使用另一个读取文件的小部件显示绘图。

您可能需要在命令中使用“-persist”标志。我知道在* nix系统上,如果你想在gnuplot过程完成并退出之后保留绘图窗口,则需要这个标志。

gnuplot -persist commands.gp

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

您可能需要添加一行

pause -1

这将显示情节,直到按下返回。
您可能看到的是gnuplot在绘图有时间显示之前运行和退出。

您可能需要设置终端类型。阅读有关它的gnuplot文档。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top