如何让gnuplot中do循环的输出元素同行显示而非逐行换行?
gnuplot 实现数组内容同行输出
问题描述
执行以下gnuplot代码:
reset session # n = *some integer*. For simplicity, let's take n = 2 n = 2 array med2[n] med2[1] = 3.23; med2[2] = 5.43 print 'MEDIA ' do for [i=1:n] { print gprintf("%8.2f",med2[i]) }
得到的输出为:
MEDIA 3.23 5.43
需要将输出改为同行显示的形式:
MEDIA 3.23 5.43
实际场景中需要处理n=12的情况,如何实现?
解决方案
核心问题是print命令会自动添加换行符,改用printf命令(默认不自动换行)即可实现同行输出。修改后的代码如下:
reset session n = 2 array med2[n] med2[1] = 3.23; med2[2] = 5.43 # 先打印标题,不换行 printf "MEDIA " # 循环打印每个数组元素,保持同行 do for [i=1:n] { printf "%8.2f", med2[i] } # 最后手动添加换行符,结束当前行 printf "\n"
代码说明
printfvsprint:printf遵循C语言风格的格式化输出,默认不会自动追加换行符,而print每次调用都会输出内容并换行。- 格式化控制:
"%8.2f"确保每个数值占8个字符宽度,保留2位小数,保证输出对齐,即使n=12时也能整齐排列。 - 手动换行:循环结束后用
printf "\n"手动添加换行符,避免后续输出和当前行内容混在一起。
如果需要更灵活的字符串拼接(比如先把所有内容组装成一个字符串再输出),也可以用sprintf实现:
reset session n = 2 array med2[n] med2[1] = 3.23; med2[2] = 5.43 output_str = "MEDIA " do for [i=1:n] { output_str = output_str . sprintf("%8.2f", med2[i]) } print output_str
内容的提问来源于stack exchange,提问作者ifffam
相关产品推荐
相关产品推荐

