Gnuplot批量绘图问题:循环变量无法切换数据区间
Gnuplot分段绘图循环异常的解决方法
问题分析
你的代码循环变量intervalo的区间计算逻辑错误,导致每次循环都只选取了前1500行数据:原代码中every ::intervalo::intervalo+1499的起始行是1到10,结束行是1500到1509,完全没有覆盖后续的1500行分段。
修正方案
核心调整点
- 正确计算区间索引:每个分段的起始行应为
(intervalo-1)*1500,结束行应为intervalo*1500-1(默认gnuplot数据行从0开始计数) - 匹配数据总量:10500行数据每1500行一个分段,共7个有效区间,需将循环范围从
1:10改为1:7 - 调整输出顺序:将
set output放在plot语句之前,确保绘图前已指定输出文件
修正后的完整代码
set datafile separator comma set xlabel 'Tiempo [minutos]' font ',20' set ylabel 'Precio [USD]' font ',20' set term png font 'Ubuntu,15' do for [intervalo = 1:7] { set output 'Grafica_Intervalo'.intervalo.'.png' start = (intervalo - 1) * 1500 end = intervalo * 1500 - 1 plot 'WTI_Intraday_1min_2011_2012.csv' every ::start::end u 0:2 w l lt rgb 'red' lw 1 title 'Intervalo '.intervalo }
特殊情况处理
如果你的CSV文件第一行是标题(非数据行),需要从第二行开始读取数据,只需修改区间计算逻辑:
start = (intervalo - 1) * 1500 + 1 end = intervalo * 1500
内容的提问来源于stack exchange,提问作者Fernando L. R.
相关产品推荐
相关产品推荐

