Gnuplot,来自 Windows 的 C++。命令窗口打开和关闭

2023-11-23

我有以下内容,无论我尝试什么,命令窗口都会再次打开和关闭。没有显示任何图,也没有写入任何文件。任何有解决方案的人都可以使用 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 编译器以及在 GNU/Linux 上使用进行了测试gcc. The gnuplot二进制文件必须位于路径上,并且在 Windows 上,管道pgnuplot必须使用二进制版本。

我发现 Windows 管道比 GNU/Linux 上的相应管道慢得多。对于大型数据集,将数据传输到gnuplot在 Windows 上通过管道传输速度很慢并且通常不可靠。此外,按键等待代码在 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gnuplot,来自 Windows 的 C++。命令窗口打开和关闭 的相关文章

随机推荐

  • 当基础镜像为 centos 与 ubuntu:trusty 时,以 shell 形式运行 CMD/ENTRYPOINT 时,不同进程以 PID 1 运行

    使用以下 dockerfile 构建并运行图像 Dockerfile1 FROM ubuntu trusty ENTRYPOINT ping localhost 现在运行以下命令来查看容器中运行的进程 docker exec it
  • “String[]::new”是什么意思?

    我正在学习如何使用流 但我遇到了这个方法的问题 public static String inArray String array1 String array2 return Arrays stream array1 filter str
  • 何时使用 AtomicReference (Java)?真的有必要吗?

    我已经多次使用 AtomicLong 但我从未需要使用 AtomicReference 看来 AtomicReference 可以做到其中之一 我从另一个 stackoverflow 复制了这段代码 问题 public synchroniz
  • 从私钥生成 ssh 公钥

    我有私人 ssh id rsa 密钥 我如何从中生成公钥 选项 y输出公钥 来自linux手册ssh keygen命令 y 此选项将读取私有 OpenSSH 格式文件并打印 一个 到标准输出的 OpenSSH 公钥 ssh keygen y
  • Google Drive API v3:没有任何方法可以获取 google 文档的下载网址吗?

    Google Drive API v2 到 v3迁移指南 says ExportLinks 字段已从文件中删除 要导出 Google 文档 请改用 files export 方法 我不想立即导出 下载 文件 files export 实际上
  • 自动调整 JButton 图标大小

    所以我有一个 JButtons 我在其中添加了图标 图标最初太大 所以我事先调整了它们的大小 效果很好 除了当我调整窗口大小时 JButton 会更改大小 但图标不会更改 这是有问题的 有没有办法让图标只填充它所附加的 JButton 一些
  • 在 Node.js 中等待多个回调

    我有一个 Node js 应用程序 其中可能会调用多个函数 具体取决于多个因素 但在最后一个回调后仅调用最后一个函数 这是我得到的简化版本 if foo bar function1 arg1 function val1 doWhatever
  • WPF ListView 非活动选择颜色

    I m creating a WPF application where several ListView selections are made in a row similar to the iTunes browser The pro
  • 将函数应用于 pandas 数据框中的组

    我正在尝试将简单的函数应用于 pandas 中的组 我有这个数据框 我可以根据它进行分组type df pandas DataFrame id a b c d v 1 2 3 4 type X Y Y Y set index id df g
  • 有没有办法阻止在 R Shiny 中打开下载页面?

    在闪亮的应用程序中单击下载按钮后 将打开一个新页面来初始化下载 但是 我的下载处理程序需要一些时间来生成可下载文件 该文件显示在闪亮主页面的进度栏中 有没有办法让用户留在主页上或阻止下载页面打开或推迟下载页面直到文件生成为止 非常感谢 Ma
  • 笑话如何在 package.json 脚本中设置文件模式

    我在 package json 中有 scripts test cross env NODE ENV test jest 我想测试所有文件匹配模式 front test js but if scripts test cross env NO
  • firebase Android 应用程序无法使用移动数据

    每当我连接移动数据时 我的 Firebase Android 应用程序都无法运行 身份验证 数据库和存储等所有功能均无法访问 我目前在印度 使用 Aircel sim 卡 是 Firebase 服务器还是我的网络提供商的问题 logcat
  • 将纬度/经度转换为 R 中的海拔高度

    有谁知道 R 中是否有一个工具可以在给定纬度和经度的情况下查找某个位置的海拔高度 或者您可以使用从 geonames 查找的包 并从 srtm3 数字高程模型中获取值 首先通过注册获得 geonames 用户名geonames org 然后
  • 如何从自定义属性中确定附加类型?

    我有一个可以分配给一个类的自定义属性 FooAttribute 我想做的是 从属性内部确定哪种类型实际使用了我 例如如果我有 FooAttribute public class Bar 在 FooAttribute 的代码中 如何确定是 B
  • 我可以将 用于高度和宽度受限的图像吗?

    我有一个幻灯片之类的东西 其中图像将尽可能大地扩展 但不会超过视口的宽度或高度 基本上object fit contain 我想让这些图像具有响应能力 因为对于手机和大型桌面来说 尽可能大 是有很大区别的 我不能使用 img 因为现在 它只
  • ddslick 选择选项不会发布所选选项的值 - jquery 插件

    我正在使用 ddslick 制作带有图标的下拉菜单 唯一的问题是当我发布表单时所选选项的值始终为空 如果我关闭 ddslick 则工作正常
  • 处理大位图

    我有一堆图像网址 我必须下载这些图像并将它们一一显示在我的应用程序中 我正在使用将图像保存在集合中SoftReferences以及 Sdcard 上以避免重新获取并改善用户体验 问题是我对位图的大小一无所知 事实证明 当我使用时 我偶尔会遇
  • OpenSAML (2.0) 签名验证不起作用

    Problem 我正在使用 OpenSAML 构建一种对发布到我们服务器的 SAML 2 0 响应进行身份验证的方法 我已经完成了大部分工作 能够访问断言的各个方面 唯一的问题是 当我尝试使用下面的公钥验证签名时 它指出 签名未根据凭证的密
  • 如何使“await using”语法正确?

    我有以下同步代码 运行良好 private void GenerateExportOutput using StreamWriter writer new Coordinator OutputDirectory export txt if
  • Gnuplot,来自 Windows 的 C++。命令窗口打开和关闭

    我有以下内容 无论我尝试什么 命令窗口都会再次打开和关闭 没有显示任何图 也没有写入任何文件 任何有解决方案的人都可以使用 c 中的 gnuplot 我有 4 4 和 4 6rc1 可用 ifdef WIN32 gp popen C Pro