如何在.gpi文件中实现字符串插值以输出变量值?
解决gnuplot .gpi脚本中变量无法在标题中解析的问题
首先纠正一个误解:你提到的.gpi文件不是Garmin用于GPS点绘制的文件,它其实是gnuplot的脚本文件,用于生成数据可视化图表,这是你搜索信息时可能混淆的点。
回到你的问题:你用${tag}试图在plot的标题中输出变量值,但得到的是字面量,原因有两个:
- gnuplot中,单引号包裹的字符串会被当作纯文本,不会解析其中的变量
- gnuplot的变量引用语法是
$变量名,而非${变量名}(这种语法在shell里常用,但gnuplot不支持)
这里提供两种可行的解决方案:
方案1:用双引号包裹标题,直接引用变量
把标题的单引号换成双引号,然后用$tag引用变量:
tag=sprintf("%s", ARG1) plot sprintf("%s/tags/%s.dat", history_dir, tag) \ u 1:2 w filledcurve x1 ls 20 t "Tag $tag emitted ", \ '' u 1:4 w filledcurve x1 ls 21 t "Packages which emitted $tag", \ '' u 1:3 w filledcurve x1 ls 22 t "Tag $tag overridden"
方案2:用sprintf拼接标题字符串
如果需要更复杂的字符串拼接,也可以用sprintf函数生成标题:
tag=sprintf("%s", ARG1) plot sprintf("%s/tags/%s.dat", history_dir, tag) \ u 1:2 w filledcurve x1 ls 20 t sprintf("Tag %s emitted ", tag), \ '' u 1:4 w filledcurve x1 ls 21 t sprintf("Packages which emitted %s", tag), \ '' u 1:3 w filledcurve x1 ls 22 t sprintf("Tag %s overridden", tag)
两种方案都能让tag变量的实际值替换到标题里,你可以根据需求选择。
内容的提问来源于stack exchange,提问作者brianrobt
相关产品推荐
相关产品推荐

