如何通过指定 Gnuplot 脚本内的所有点来绘制数据而无需单独的文件?
我的程序生成调用 gnuplot 的 bash 脚本。我不想创建额外的文件来存储数据;有什么方法可以显式调用所有值吗?或者可能让 bash 创建一个临时文件。
类似的东西。
plot {(1,5),(2,10),(3,1)}
我正在寻找
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用内联数据的语法 - 文件名
'-'
。以下示例在
GIF
图像(bash
脚本)中生成一个简单的绘图:You can use the syntax for inline data - filename
'-'
.The following example produces a simple plot in a
GIF
image (bash
script):Gnuplot 5.0.1 数据块
main.gnuplot
转换为 PNG:
输出:
此方法比
'-'
更通用,因为它使得更容易多次重复使用相同的数据,包括在同一个plot
命令上:如何在单个绘图命令的 gnuplot 命令脚本中嵌入多个数据集?版本 5 可在Ubuntu 15.04,或从源代码编译:https://askubuntu.com/a/684136/52975
对使用函数绘图时的
+
和++
特殊文件名感兴趣。在 Ubuntu 18.10、gnuplot 5.2 上测试。
Gnuplot 5.0.1 datablocks
main.gnuplot
Convert to PNG:
Output:
This method is a bit more versatile than
'-'
as it makes it easier to reuse the same data multiple times, including on the sameplot
command: How to embed multiple datasets in a gnuplot command script for a single plot command?Version 5 is available on Ubuntu 15.04, or compile from source with: https://askubuntu.com/a/684136/52975
You may also be interested in the
+
and++
special file names when plotting with functions.Tested on Ubuntu 18.10, gnuplot 5.2.
使用带有管道的 shell 的示例,
Example from using shell with pipeline,
bash 使用 gnuplot 绘制一行 ping 图形
抱歉,不是light(361 个字符):
运行此行将使您的终端停留 30 秒,然后在屏幕上绘制一个图表,显示过去 30 秒到 google.com 的 ping 延迟。
同一行可以像这样分割(也可行):
但这不打印值!
所以我添加了一些字节:
这可能会创建一个像这样的窗口:
并同时在终端上打印:
重写分割:
bash One line ping graph with gnuplot
Sorry, it's not light (361 characters):
Running this line will hold your terminal for 30 seconds, than plot on screen a graph presenting ping delay to google.com on last 30 seconds.
The same line could be splitted like this (workable too):
But this don't print values!
So i've added some few bytes:
This may create a window like this:
And simultaneously print on terminal:
Re-written splitted:
解决方案是使用数组和参数线。
输出
来源:https://groups.google.com/d/msg/comp.graphics.apps.gnuplot/UdiiC2cBQNo/xEyj6i7Y910J
Solution is using arrays and parametric lines.
output
source: https://groups.google.com/d/msg/comp.graphics.apps.gnuplot/UdiiC2cBQNo/xEyj6i7Y910J
10 年后...
您可以直接在 gnuplot 中编写类似的内容:
其中
format.sh
是本地文件中的一个非常简单的脚本(记得给它 exec 权限):它是如何工作的?
三个
sed
命令执行以下操作:{(
和})
) ,(
换行符,
更改为空格因此:
gnuplot
plot " 语法杠杆在 popen 上运行
command< /code> 在 shell 中捕获输出并即时绘制它在其他情况下也非常有用。
10 years later...
You can write something like this directly in gnuplot:
where
format.sh
is a pretty simple script in a local file (remember to give it exec permissions):How does it works?
The three
sed
commands do the following:{(
and})
),(
to a newline,
to spacesSo:
The gnuplot
plot "< command"
syntax levers on popen to runcommand
in a shell, capture the output and plot it on the fly. It can be pretty useful also in other circumstances.