使用 Common Lisp 和 Gnuplot 从 emacs 顺序绘制数据

2024-01-07

假设我有一些数据数组(具体来说是一个向量)。 我可以使用 Gnuplot 按顺序逐个元素地绘制它,这样它看起来就像是通过监视器跟踪的现实生活中的信号吗?

我知道我可以使用 Common Lisp 将整个数据写入文本文件,然后使用 gnuplot 我可以以批处理格式绘制它。我需要的是,当数据按顺序出现时,我想在我的绘图上放置一个点。

数据可能会在循环内生成,因此您可以将 x 轴视为整数值离散时间轴。因此,在循环中,如果数组的第一个元素生成为 5,我想在绘图上放置一个点到 (0,5)。然后,如果第二个元素生成为 3,我想将绘图上的另一个点放置到 (1,7)(保留旧数据点)。因此,当我迭代循环时,我会按顺序绘制数据。

我正在使用 emacs 和 Common Lisp 来实现我的目的,并且我想在这些工具中绘制这些数据。如果除了 Gnuplot 之外还有其他选择,我想听听。

如果这不容易实现,那么如果我可以通过某些 Common Lisp 命令运行 Gnuplot 命令文件,那就太酷了。

edit:

根据人们在该线程下给出的建议,我使用以下代码编写了代码cgn它使用ltk.
现在,我在屏幕上预先指定的位置打开两个 x11 窗口,然后进入循环。每次我打开一个流并将数据(以 20 Hz 采样的 0.25 Hz 的正弦波和余弦波)写入文本文件 Trial.txt 时,都会在循环中使用:if-exists :append选项并关闭流。然后,在每次迭代时,我使用 gnuplot 绘制整个数据format-gnuplot命令。这段代码为我提供了两个预先指定的 x 和 y 范围的窗口,然后可以在窗口中观察上述正弦波和余弦波的演变。
正如我之前所说,我没有很强的编程背景(我是一名电气工程师,不知何故最终使用了 common lisp),而且我很确定我的代码不是最优的且不优雅。如果你们有一些进一步的建议、更正等,我真的很想听听。代码在这里:

(setf filename "trial.txt")
(setf path (make-pathname :name filename))
(setf str (open path :direction :output  :if-exists :supersede :if-does-not-exist :create))
(format str "~,4F ~,4F" -1 -1)
(close str)

;start gnuplot process
(start-gnuplot "/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot")

;set 2 x11 windows with the following properties
(format-gnuplot "cd ~S" "Users/yberol/Desktop/lispbox/code")
(format-gnuplot "set terminal x11 0 position 0,0")
(format-gnuplot "set xrange [0:10]")
(format-gnuplot "set yrange [-1:1]")
(format-gnuplot "unset key")
(format-gnuplot "set grid")

(format-gnuplot "plot ~S using 1" filename)
(format-gnuplot "set terminal x11 1 position 800,0")
(format-gnuplot "plot ~S using 2" filename) 

;write data into text 
(loop :for i :from 0 :to 10 :by (/ 1 20) :do
   (setf str (open path :direction :output  :if-exists :append :if-does-not-exist :create))
   (format str "~,4F ~,4F ~,4F ~%" i (sin (* 2 pi (/ 5 20) i)) (cos (* 2 pi (/ 5 20) i)))
   (close str)
   (format-gnuplot "set terminal x11 0")
   (format-gnuplot "plot ~S using 1:2 with lines" filename)
   (format-gnuplot "set terminal x11 1")
   (format-gnuplot "plot ~S using 1:3 with lines" filename)
   (sleep 0.1))
(close-gnuplot)

非常感谢。


cgn http://www.cliki.net/cgn是一个与 gnuplot 交互的通用 Lisp 解决方案,它使用LTK http://www.cliki.net/Ltk

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

使用 Common Lisp 和 Gnuplot 从 emacs 顺序绘制数据 的相关文章

  • 在正投影中绘制世界地图给出“非有限点”

    我有一个世界国家的形状文件 从下载here http thematicmapping org downloads TM WORLD BORDERS 0 3 zip 我可以使用 R 在 R 中绘制它 countries lt readOGR
  • 如何在 Pandas 中叠加“一天”内的数据进行绘图

    我有一个数据框 里面有一些 更有意义 数据格式如下 In 67 df Out 67 latency timestamp 2016 09 15 00 00 00 000000 0 042731 2016 09 15 00 16 24 3769
  • Seaborn:带有背景颜色的图例

    以下问题解释了如何更改图例的背景颜色 matplotlib 图例背景颜色 https stackoverflow com questions 19863368 matplotlib legend background color 但是 如果
  • 在散景图中隐藏图例

    LS 散景图会自动生成图例 如何隐藏 根本不显示 散景图中的图例 我试过 legend none 但没有成功 谢谢 如果我能稍微扩展一下 legend False是使散景图例不可见的正确方法 但它在绘图本身的创建中使用 而不是作为绘图对象的
  • 如何从 Perl 调用 gnuplot 脚本

    我有一个 gnu gp 文件 grphist conf set terminal canvas Terminal type set to canvas Options are solid butt size 600 400 fsize 10
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • 为格子中的每个面板添加不同的独特标签

    很清楚如何在格子中标记面板 https stackoverflow com questions 8508269 how to label panels in lattice using panel text or ltext论据 但是 如果
  • 打印绘图时 Octave 崩溃

    Solution 根据用户 Andy 在评论中的建议 最新版本的 Octave 目前 octave 4 0 1 rc4 的更新解决了该问题 并且绘图可以另存为 PNG 我有大量数据在 Octave 中绘制 但是当我尝试保存图像时 程序崩溃了
  • 每个刻度标签都有不同的颜色

    我正在尝试使用 matplotlib python 3 5 创建一个散点图 其中 x 轴上的每个刻度都有不同的颜色 这怎么可能 例如 假设 x 刻度为 Mo Tu We Th Fr Sa Su 现在我希望 Mo 是绿色的 Tu 是蓝色的 等
  • 我应该如何格式化 .dat 文件以便制作 3D 矢量图?

    我正在为大学做这个编程任务 我们必须写一个c 计算 3D 空间中某些线圈的磁场矢量的程序 我已经成功编写了这个程序 并且我认为它运行得很好 不过 我想添加一个特殊的东西 这是我的试卷 所以它必须特别好 我想绘制出向量 我习惯打电话gnupl
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • 从 CCL 检索(加载)源代码?

    我打了电话 load code lisp 用CCL 然后不小心删除了code lisp 有什么办法可以找回源代码吗 CCL 在内存中是否有它 这是一个非常特殊的功能 这里只为克洛祖尔CL 该代码在其他地方不起作用 这在 CCL IDE 中对
  • gnuplot:字体较小的字幕

    有人知道如何在 gnuplot 中插入较小字体的字幕吗 目前 我创建字幕的方式是使用 n在标题中 另外 我希望字幕的字体较小 提前致谢 这至少适用于 postscript 终端 出于某种原因x11不想缩放我的字体 也许这是一个错误 set
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • 学习 LISP 的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • matplotlib xkcd 无法在 Mac 上运行

    我在可视化 matplotlib xkcd 图时遇到小问题 通过简单地尝试执行上找到的示例matplotlib org http matplotlib org examples showcase xkcd html 当我执行 xkcd py
  • 如何在 gnuplot 中绘制导入数据的函数?

    如果我有一个包含多个数据点的文件 我怎样才能绘制它们的函数 例如 假设我有一个 to columns 的文件x and y我想绘制sin y 作为一个函数1 x 尝试这个 plot u 1 1 sin 2 w l 2 00000 0 161
  • 选择您要显示的数据系列

    我有一个包含多个数据系列的图 我希望能够选择我想要显示的系列 例如 只有0 and 20 那些 有没有一种简单的方法可以通过操作图表而不使用JCheckBox 例如 我希望能够通过单击该系列的图例来做到这一点 如图所示here https
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • 在 SQL 中按键组对行进行顺序编号?

    SQL中有没有办法按顺序添加行号按关键组 假设一个表包含任意 CODE NAME 元组 示例表 CODE NAME A Apple A Angel A Arizona B Bravo C Charlie C Cat D Dog D Dopp

随机推荐

  • 如何在角度应用程序的故事书中加载全局scss文件?

    我正在尝试加载故事书中的自定义全局样式文件 theme default scss 虽然我的组件正在故事书中加载 但样式没有被应用 我遵循了本教程故事书官方文档 https storybook js org docs configuratio
  • 为什么VARCHAR需要长度指定?

    为什么我们总是需要指定VARCHAR length 而不是仅仅VARCHAR 无论如何它都是动态的 UPD 我特别困惑的是它是强制性的 例如在 MySQL 中 VARCHAR 的 长度 不是内容的长度 而是内容的最大长度 VARCHAR 的
  • Pandas:替换字符串列值

    我有一个 pandas 数据框 其中有一个我正在尝试格式化的成本列 基本上 替换字符串并将其标准化 因为成本值是从不同来源提取的 还有一些 NaN 这是一些示例数据 2 75 nan 4 150000 25 00 4 50 我有以下代码 用
  • 在tomcat中配置内容安全策略

    我读到了有关配置 实现 Content Security Policy 标头的信息 并且遇到了两种执行此操作的方法 使用实现 Filter 的自定义过滤器 如下所示this https stackoverflow com questions
  • 如何使用 Kusto 在 Grafana 上执行多图时间序列

    嗯 我想这样做 https grafana com docs grafana v9 0 basics timeseries dimensions https grafana com docs grafana v9 0 basics time
  • 为什么“scheduledTimer”在块外设置时会正确触发,但在块内却不能?

    当在完成块外部调用时 以下代码片段可以完美运行 但是当我在块内部设置计时器时 计时器永远不会被触发 我不明白为什么会有差异 self timer Timer scheduledTimer timeInterval 1 target self
  • 在 redux-saga 中等待

    我想在传奇中引入延迟 使用 redux saga 我怎样才能做到这一点 如果 redux saga 提供了 API 我也会对如何手动实现它感兴趣 function save payload yield put pending I want
  • QImage 加载某些图像的方向错误

    我从如下所示的图像文件实例化 QImage 然后将其渲染在 QWidget 上 QImage const QString fileName const char format 0 对于大多数图像来说 一切正常 但对于一些图像 QImage
  • Python venv不创建虚拟环境

    我正在尝试使用以下命令为我当前的 Django 项目创建一个虚拟环境 python3 m venv env 但是该命令不会创建任何包含 bin include lib 文件夹的目录 我在这里到底缺少什么 有时系统的路径环境不知道虚拟环境执行
  • 推送到 Github 时 Git 推送挂起?

    每次我尝试推送到 github 时 Git Push 都会挂起 我正在使用 Cygwin 和 Windows 7 Git 可以在本地跟踪分支 提供状态 设置全局 user name 和 user email 并允许提交 我还是个新手 正在学
  • 使用 Xamarin 在 Android 中播放视频

    在 Xamarin for Android 中使用 VideoView 我想播放资源中的视频 这是代码 var videoView VideoView FindViewById
  • 如何在不使用 ifelse 的情况下基于范围创建因子列?

    我的数据框中有一个数字字段 例如月收入 范围从 15000 印度卢比到 60000 印度卢比不等 我想要一个新字段 比如 Income group 它将有一个与收入范围相对应的数字 比如小于 15000 为 1 大于 15000 但小于 3
  • EXTJS 和 PHP 上传文件

    我在 EXTJS 中使用 UploadFile 示例 http dev sencha com deploy dev examples form file upload html http dev sencha com deploy dev
  • azure托管的mac管道,关于如何使其更快的建议,目前非常慢,在桌面上5分钟,在服务器上接近20

    我有这个管道 效果很好 但每次构建都非常耗时 桌面 xcode 构建需要不到 5 分钟 在 mac 云服务器中需要 20 分钟特别是它下载配置和编译本机 gem 的部分 安装 gems 和 cocoapods 脚本 任务如下然后是下面的 F
  • 分面 ggplot 中轴文本的条件格式

    我正在尝试根据几项研究的效果大小绘制森林图 按其类型 X 或 Y 划分 数据集包括代表 X 类型研究和 Y 类型研究的汇总统计数据的行 指定为study Summary study lt as factor c A B C A B Summ
  • rbenv:ruby:找不到命令

    我在本地目录上使用 rbenv 和 ruby 版本 1 9 1 p378 Command ruby v给出以下错误 rbenv ruby command not found The ruby command exists in these
  • 如何实现每个时间步都带有向量输入的LSTM网络?

    我正在尝试在 Tensorflow 中创建一个生成 LSTM 网络 我有这样的输入向量 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 该矩阵中的每个向量都是一个时间步 或者换句话说 每个向量应该是 LSTM 的一个
  • 如何在 woocommerce 上添加第二个“添加到购物车”按钮

    我想在 woocommerce 产品描述的页面末尾添加第二个 添加到购物车 按钮 我该怎么做呢 非常感谢您的参与 Method 1 id get the ID echo do shortcode add to cart id id Meth
  • 使用循环将按钮设置为 onclicklistener

    我试图使用循环来设置每个按钮单击时的操作 因为大多数按钮只会返回其文本值 但是我收到一条错误消息 指出 变量 i 是从内部类中访问的 需要被宣布为最终版本 我该如何解决这个问题 这是我得到的 String getValuesPressed
  • 使用 Common Lisp 和 Gnuplot 从 emacs 顺序绘制数据

    假设我有一些数据数组 具体来说是一个向量 我可以使用 Gnuplot 按顺序逐个元素地绘制它 这样它看起来就像是通过监视器跟踪的现实生活中的信号吗 我知道我可以使用 Common Lisp 将整个数据写入文本文件 然后使用 gnuplot