You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GNUPlot 4.6不识别$DATA << EOD 求跨版本兼容内嵌数据写法

兼容GNUPlot 4.6与5.2版本的内嵌数据解决方案

报错根因

$DATA << EOD格式的命名内嵌数据块是GNUPlot 5.0及以上版本才新增的特性,4.6版本无对应语法支持,因此会识别该行命令为无效指令。

兼容实现方案(无需单独存储数据文件)

方案1:单次使用数据采用'-'伪文件语法

该语法为两个版本原生支持,直接在绘图命令后嵌入数据即可,示例:

# 直接在绘图语句后接数据
plot '-' using 1:2 with points
0.3 -0.1599804163   53
2   0.1051269323    84
0.4 0.0227271412    87
0.4 0.1050702557    89
# 结束标记,不可省略
e

如果需要同时绘制多组内嵌数据,每组数据结束后都追加e即可。

方案2:多次复用数据采用宏存储写法

如果同一份数据需要被多个绘图命令调用,可以开启宏支持后将数据存入宏变量:

# 开启宏支持
set macro
# 数据写入宏变量,行末加反斜杠实现换行
ALL_DATA="0.3 -0.1599804163   53 \
2   0.1051269323    84 \
0.4 0.0227271412    87 \
0.4 0.1050702557    89"

# 第一次调用数据绘图
print ALL_DATA | plot '-' using 1:2 with points
# 第二次调用数据绘制其他维度
print ALL_DATA | plot '-' using 1:3 with lines

方案3:超大量数据采用Shell包裹写法

如果数据量过万行,宏变量可能存在长度限制,此时可以用Shell脚本包裹gnuplot逻辑,通过管道传递数据无需生成独立文件:

#!/bin/bash
cat << EOF | gnuplot
# 这里写所有gnuplot配置逻辑
set terminal pngcairo
set output 'test.png'
# 直接读取管道传入的内嵌数据
plot '-' using 1:2 with points
0.3 -0.1599804163   53
2   0.1051269323    84
0.4 0.0227271412    87
0.4 0.1050702557    89
e
EOF

内容的提问来源于stack exchange,提问作者con

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:36:04