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

如何从1000个data_i.dat文件提取指定行列数据绘图?

解决方法

你的代码存在两个问题:一是循环范围从0开始,但你的文件是从data_1.dat到data_1000.dat,会尝试读取不存在的data_0.dat;二是默认会用文件内的第一列作为x轴,而你需要的x是文件序号i,y是对应文件第352行的第2列数据。

给你两种可行的实现方式:

方式一:纯Gnuplot实现(无需外部工具)

用数组存储每个文件的目标值,再统一绘图:

# 创建数组存储1000个y值
array y[1000]
# 循环遍历每个文件
do for [i=1:1000] {
    # 提取对应文件第352行第2列的数据,不输出统计信息
    stats sprintf('data_%d.dat', i) every ::352::352 using 2 nooutput
    # 因为只取一行,STATS_min和STATS_max都是目标值,随便存一个即可
    y[i] = STATS_min
}
# 绘制点,x轴为文件序号1-1000,y轴为数组中的对应值
plot [1:1000] '+' using 1:(y[$1]) with points title "各文件第352行第2列数据"

方式二:借助外部工具(适合Unix/Linux环境)

用sed直接提取目标行,绘图时指定x为循环序号:

plot for [i=1:1000] sprintf('< sed -n "352p" data_%d.dat', i) using (i):2 with points title "各文件第352行第2列数据"

这里sed -n "352p"的作用是只输出文件的第352行,using (i):2表示把循环变量i作为x轴,该行的第2列作为y轴。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:57:37