让C代码自动绘制图表

2024-01-31

我编写了一个程序,它将数据列表写入“.dat”文件,然后使用 gnuplot 单独绘制它。有没有办法让我的代码自动绘制它?我的输出的形式如下:

x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
 ....

理想情况下,当我运行代码时,图表还将打印出 x 标签、y 标签和标题(可以从我的 C 代码中更改)。非常感谢。


我在搜索有关 gnuplot 的其他内容时遇到了这个。尽管这是一个老问题,但我想我会贡献一些示例代码。我将它用于我的一个程序,我认为它做得非常整洁。 AFAIK,此 PIPEing 仅适用于 Unix 系统(请参阅下面针对 Windows 用户的编辑)。我的 gnuplot 安装是来自 Ubuntu 存储库的默认安装。

#include <stdlib.h>
#include <stdio.h>
#define NUM_POINTS 5
#define NUM_COMMANDS 2

int main()
{
    char * commandsForGnuplot[] = {"set title \"TITLEEEEE\"", "plot 'data.temp'"};
    double xvals[NUM_POINTS] = {1.0, 2.0, 3.0, 4.0, 5.0};
    double yvals[NUM_POINTS] = {5.0 ,3.0, 1.0, 3.0, 5.0};
    FILE * temp = fopen("data.temp", "w");
    /*Opens an interface that one can use to send commands as if they were typing into the
     *     gnuplot command line.  "The -persistent" keeps the plot open even after your
     *     C program terminates.
     */
    FILE * gnuplotPipe = popen ("gnuplot -persistent", "w");
    int i;
    for (i=0; i < NUM_POINTS; i++)
    {
    fprintf(temp, "%lf %lf \n", xvals[i], yvals[i]); //Write the data to a temporary file
    }

    for (i=0; i < NUM_COMMANDS; i++)
    {
    fprintf(gnuplotPipe, "%s \n", commandsForGnuplot[i]); //Send commands to gnuplot one by one.
    }
    return 0;
}

EDIT

在我的应用程序中,我还遇到了一个问题,即在调用程序关闭之前绘图不会出现。要解决这个问题,请添加fflush(gnuplotPipe)当你使用过之后fprintf向其发送您的最终命令。

我还看到 Windows 用户可能会使用_popen代替popen-- 但是我无法确认这一点,因为我没有安装 Windows。

EDIT 2

通过发送 gnuplot 可以避免写入文件plot '-'命令后跟数据点,后跟字母“e”。

e.g.

fprintf(gnuplotPipe, "plot '-' \n");
int i;

for (int i = 0; i < NUM_POINTS; i++)
{
  fprintf(gnuplotPipe, "%lf %lf\n", xvals[i], yvals[i]);
}

fprintf(gnuplotPipe, "e");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让C代码自动绘制图表 的相关文章

随机推荐

  • 使用 Spring Security 编码密码的问题

    我正在使用 grails 2 3 0 并在使用 spring security 编码密码时遇到奇怪的问题 这是我对密码进行编码的方法 String encodePassword String password return springSe
  • React Native:指定的子级已经有父级

    我有 2 个组件 DraggableCard 和 ChooseMachine ChooseMachine 使用 DraggableCard 当我到达 ChooseMachine 组件时 它返回错误 The specified child a
  • 如何在第二个连接表中进行多个条件的连接?

    我有2张桌子 第一个表是客户列表 第二个表是这些客户拥有的设备列表 另一个字段包含该客户的一些数据 客户问题 问题是对于每个客户来说 可能存在多个问题 我需要对这些表进行联接 但只返回有其中两个问题的客户的结果 问题是 如果我使用 OR 进
  • iText PDFWriter - 如果少数表格行转到新页面,则写入表格标题

    我在用PdfWriter创建 PDF 文档 我正在添加一个PdfPTable到 PDF 文档 该表有标题行 然后是实际数据行 如果表很大 那么它的一部分将被转移到新页面 我希望此页面也有表格标题行 但是 只有当表数据进入新页面时 我才需要此
  • 将带有日期列的 pyspark DataFrame 转换为 Pandas 会导致 AttributeError

    我有以下数据框 pyspark DATE date nullable true ID string nullable true A double nullable true B double nullable true 在尝试将数据帧转换为
  • 如何使用 Google Apps 脚本在 Gmail 插件中创建此 UI

    有人可以告诉我如何使用 Google Apps 脚本在 Gmail 插件中实现以下 UI 我尝试了 KeyValue 的带有可点击文本的图标我能够实现这一点 但我不知道如何将电子邮件文本放在 keyValue 图标旁边 现在 我不关心带有计
  • fopen 在 Linux 中失败,但在 Windows 中工作

    当我运行下面的代码时 它在 Linux 中失败 但在 Windows 中没有问题 文件名类似于 src 文件夹 文件 char loadProgSource const char filename size t finalLength ch
  • 你会如何用冰糕来记忆玫瑰花?

    尝试注释此代码 玫瑰记忆 给我一个错误Use of undeclared variable git sha typed strict frozen string literal true module Util extend T Sig s
  • 将ArrayList转换为有序集(TreeSet)并返回

    我是一种采用数字列表的方法 例如ArrayList 并将其转换为排序集 例如TreeSet 并返回它 我写了代码 但遇到了一些问题 public TreeSet getSort ArrayList list TreeSet set new
  • 来自 HTTPS URLSession.dataTask 的 0 字节数据

    我正在尝试从 URL 检索一些 JSON 数据 但它每次在数据中返回 0 字节 我检查了几个不同的 SO 帖子 但似乎没有一个与我遇到的确切问题相符 因为我从中获取数据的服务器确实使用带有 TLS 1 2 的 HTTPS 所以我不认为有任何
  • 边框位于文本下方但不穿过文本

    我正在为我的杂志做网页设计 现在 我正在尝试制作类似于 1996 年标题的内容 如下图所示 文本下方有边框 但文本周围有白色背景 任何人都可以帮助我做到这一点吗 当然可以 试试这个 HTML div class heading h1 Hea
  • DAX 相当于 Excel PERCENTRANK.INC 每个类别

    我想在 DAX 中计算 Excel 函数 PERCENTRANK INC 的等效项 但按类别计算 我承认我什至不知道如何计算类别 任何提示将不胜感激 以下是示例数据的 M 代码 let Source Table FromRows Json
  • 如何禁用非员工用户的可浏览 API (is_staff=False)?

    就我而言 我使用 Django REST Framework DRF 作为内部 api 它不适合普通用户使用 因此我想为普通用户禁用它 an admin is staff True should be able to access it a
  • ALM 12:通过 REST 进行身份验证返回 400 错误请求

    我遵循这里的指导 http alm help saas hp com en 12 50 api refs REST TECH PREVIEW Content General Session Management html http alm
  • 如何知道以下代码将创建多少个对象?

    当涉及到字符串时 我对对象的情况感到有点困惑 所以想知道使用以下代码将创建多少个对象 以及有关字符串池和堆的字符串对象创建的一些解释 public static void main String args String str1 Strin
  • D3D11坐标系

    我的一些旧代码最终出现了一堆令人讨厌的黑客行为 以使事情 正确 工作 在移动物体和相机方面 例如必须采用 std sin yaw 而不是 std sin yaw 在实现在线其他地方找到的方程时 通常会让一切变得混乱 在许多情况下都达到了追踪
  • iOS 9 UITableView 分隔符插入(显着左边距)

    我的分隔符有问题UITableViewCells in UITableView on iOS 9 他们有很大的左边距 我已经有用于删除间距的代码iOS 8但它不适用于iOS 9 看起来他们还添加了其他东西 我想它可能与布局边距指南 http
  • 找不到表“cdc.lsn_time_mapping”

    我正在开发一个调用此函数 sys fn cdc map time to lsn 的遗留系统 并且出现以下错误 Invalid object name cdc lsn time mapping 我在对象资源管理器中找不到此表 这个功能有替代品
  • 在句子边界分割文本文件

    我必须处理一个文本文件 一本电子书 我想对其进行处理 以便每行有一个句子 换行符分隔的文件 是吗 我如何使用 UNIX 实用程序 sed 来完成此任务 它是否有一个 句子边界 的符号 就像 单词边界 的符号一样 我认为 GNU 版本有这个
  • 让C代码自动绘制图表

    我编写了一个程序 它将数据列表写入 dat 文件 然后使用 gnuplot 单独绘制它 有没有办法让我的代码自动绘制它 我的输出的形式如下 x coord analytic approximation x coord analytic ap