我有这个输入文件(它是自动生成的):
"John";"580"
"Monica";"580"
"Monica";"580"
"John";"580"
"John";"580"
"John";"580"
"John";"580"
"Mark";"576"
"Monica";"580"
"John";"580"
"John";"580"
"Mark";"586"
"John";"580"
"John";"580"
"John";"580"
"John";"580"
"Monica";"580"
我想创建一个图表,其中包含每人第二列的数字之和。
我尝试了其他可能的解决方案,但均无济于事。例如:
set datafile separator ";"
plot "input.csv" u 1:2:xtic(1) smooth cumulative w boxes
这将返回错误,我知道gnuplot期望使用数值而不是字符串,那么我该怎么做呢?
我无法将其他任何列添加到文件,因为它是自动生成的。
谢谢。
这有点棘手。基本上,您必须为每个字符串分配一个唯一的数字,该数字用于添加属于相同字符串的值:
list = ''
index(w) = words(substr(list, 0, strstrt(list, w)-1))
add_label(d) = (strstrt(list, d) == 0 ? list=list.' '.d : '')
set datafile separator ";"
plot 'input.csv' using (d='|'.strcol(1).'|', add_label(d),index(d)):2:xtic(1) smooth frequency w boxes
注意,您必须使用smooth frequency
汇总所有属于单个字符串的值,cumulative
才能汇总所有值。
我提出的解决方案仅适用于不带空格的字符串(无论它们是否用引号引起来),但可能会扩展为也可以使用空格(可能有点长)。
您将在上一个答案Gnuplot中找到更详细的描述,在y轴上绘制带有文本的图形。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句