我有以下,无论我尝试什么命令窗口再次打开和关闭.没有显示图表,也没有写入文件.任何有c使用gnuplot的解决方案的人.我有4.4和4.6rc1可用.
#ifdef WIN32 gp = _popen("C:\Program Files (x86)\gnuplot\bin\pgnuplot.exe","w"); #else gp = popen("gnuplot -persist","w"); #endif if (gp == NULL) return -1; /* fprintf(gp,"unset border\n"); fprintf(gp,"set clip\n"); fprintf(gp,"set polar\n"); fprintf(gp,"set xtics axis nomirror\n"); fprintf(gp,"set ytics axis nomirror\n"); fprintf(gp,"unset rtics\n"); fprintf(gp,"set samples 160\n"); fprintf(gp,"set zeroaxis"); fprintf(gp," set trange [0:2*pi]");*/ fprintf(gp,"set term png\n"); fprintf(gp,"set output \"c:\\printme.png\""); fprintf(gp,"plot .5,1,1.5\n"); fprintf(gp,"pause -1\n"); fflush(gp);
以下程序已在Windows上使用Visual Studio和MinGW编译器以及使用gcc的GNU / Linux进行了测试. gnuplot二进制文件必须位于路径上,而在Windows上,必须使用二进制文件的管道pgnuplot版本.
原文链接:https://www.f2er.com/windows/372198.html我发现Windows管道比GNU / Linux上的相应管道慢得多.对于大型数据集,在Windows上通过管道将数据传输到gnuplot很慢并且通常不可靠.此外,按键等待代码在GNU / Linux上更有用,其中一旦调用pclose(),绘图窗口将关闭.
#include <iostream> #include <stdio.h> #include <stdlib.h> // Tested on: // 1. Visual Studio 2012 on Windows // 2. Mingw gcc 4.7.1 on Windows // 3. gcc 4.6.3 on GNU/Linux // Note that gnuplot binary must be on the path // and on Windows we need to use the piped version of gnuplot #ifdef WIN32 #define GNUPLOT_NAME "pgnuplot -persist" #else #define GNUPLOT_NAME "gnuplot" #endif int main() { #ifdef WIN32 FILE *pipe = _popen(GNUPLOT_NAME,"w"); #else FILE *pipe = popen(GNUPLOT_NAME,"w"); #endif if (pipe != NULL) { fprintf(pipe,"set term wx\n"); // set the terminal fprintf(pipe,"plot '-' with lines\n"); // plot type for(int i = 0; i < 10; i++) // loop over the data [0,...,9] fprintf(pipe,"%d\n",i); // data terminated with \n fprintf(pipe,"%s\n","e"); // termination character fflush(pipe); // flush the pipe // wait for key press std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); #ifdef WIN32 _pclose(pipe); #else pclose(pipe); #endif } else std::cout << "Could not open pipe" << std::endl; return 0; }