如何根据 bash 脚本中的偏移数组索引为 gnuplot 行添加标题?
How to title a gnuplot line based on offset array index in bash script?
我有一组名称和一个 csv 文件:
name=(abc def ghi jkl) | 1, 2, 3, 4, 5
| 6, 7, 8, 9, 10
我想通过 col1 对每个其他 col(2..5) 绘制 csv 文件,然后用数组为每一行加标题。所以列的索引和要绘制的数组是不一样的;抵消。例如:
gnuplot < plot 'input.csv' using 1:2 t "${name[0]}"
我试过使用 gnuplot 的 word()
,也尝试过 (name, -1)
、(name, 1)
:
gnuplot < plot 'input.csv' using 1:2 t word(name, 0)
但我总是收到以下错误:
line 0: internal error : non-STRING argument
我确定我的数组是 space-separated,符合 word()
。我不知道为什么它不识别这些名字。请并感谢您提出解决问题的任何建议...
我查看了 gnuplot documentation 并意识到 gnuplot 的 word()
只接受 space-separated STRING,而不是数组。所以我相应地转换了数组,但是在 gnuplot 环境中通过持久化它。并考虑“偏移量”,记住 word
索引是基于 1 的:
gnuplot -persist <<-EOFMarker
nameList="${name[*]}"
plot for [i=2:5] 'input.csv' using 1:i t word(nameList, i-1)
EOFMarker
图表已按要求绘制。我留下这个问题以防万一有人遇到同样的问题,尽管我很抱歉提出问题并自己回答。我希望它不违反 Whosebug 规则...
我有一组名称和一个 csv 文件:
name=(abc def ghi jkl) | 1, 2, 3, 4, 5
| 6, 7, 8, 9, 10
我想通过 col1 对每个其他 col(2..5) 绘制 csv 文件,然后用数组为每一行加标题。所以列的索引和要绘制的数组是不一样的;抵消。例如:
gnuplot < plot 'input.csv' using 1:2 t "${name[0]}"
我试过使用 gnuplot 的 word()
,也尝试过 (name, -1)
、(name, 1)
:
gnuplot < plot 'input.csv' using 1:2 t word(name, 0)
但我总是收到以下错误:
line 0: internal error : non-STRING argument
我确定我的数组是 space-separated,符合 word()
。我不知道为什么它不识别这些名字。请并感谢您提出解决问题的任何建议...
我查看了 gnuplot documentation 并意识到 gnuplot 的 word()
只接受 space-separated STRING,而不是数组。所以我相应地转换了数组,但是在 gnuplot 环境中通过持久化它。并考虑“偏移量”,记住 word
索引是基于 1 的:
gnuplot -persist <<-EOFMarker
nameList="${name[*]}"
plot for [i=2:5] 'input.csv' using 1:i t word(nameList, i-1)
EOFMarker
图表已按要求绘制。我留下这个问题以防万一有人遇到同样的问题,尽管我很抱歉提出问题并自己回答。我希望它不违反 Whosebug 规则...