我想将不同文件的最大值和平均值绘制成一个图。 我有几个ntp-stats,所以我想:
input = "./peerstats/s_peerstats.201407"
set terminal svg size 600 400
set xlabel "Day in July (s)"
set ylabel "Jitter (ms)"
set yrange[0:0.65]
set output "ntpq_month_07.svg"
do for [k=10:31]{
stats input.k."_pps" using ($8*1000.0) nooutput name "PPS",\
stats input.k."_rz1" using ($8*1000.0) nooutput name "RZ1",\
stats input.k."_rz2" using ($8*1000.0) nooutput name "RZ2",\
set "ntpq_month_07.svg"
print ($k):PPS_max
print ($k):RZ1_max
print ($k):RZ2_max
print ($k):PPS_mean
print ($k):RZ1_mean
print ($k):RZ2_mean
}
这是gnuplot的错误:
;
stats input.k."_pps" using ($8*1000.0) nooutput name "PPS", stats input.k."_rz1" using ($8*1000.0) nooutput name "RZ1", stats input.k."_rz2" using ($8*1000.0) nooutput name "RZ2", set "ntpq_month_07.svg" ;
print ($k):PPS_max;
print ($k):RZ1_max;
print ($k):RZ2_max;
print ($k):PPS_mean;
print ($k):RZ1_mean ;
print ($k):RZ2_mean;
^
line 20: Expecting [no]output or prefix
语法错在哪里?
非常感谢:)!
答案 0 :(得分:0)
首先,您必须在单独的一行中拥有所有stats
命令。这很好。然后是你的print
语法被破坏了。
考虑文件test.dat
1
2
和电话
do for [i=10:11] {
stats 'test.dat' using 1 nooutput name "PPS"
stats 'test.dat' using ($1*i) nooutput name "RZ1"
print sprintf("max(PPS_%d): %f", i, PPS_max)
print sprintf("max(RZ1_%d): %f", i, RZ1_max)
}
给出输出
max(PPS_10): 2.000000
max(RZ1_10): 20.000000
max(PPS_11): 2.000000
max(RZ1_11): 22.000000
所以你的脚本应如下所示:
input = "./peerstats/s_peerstats.201407"
set terminal svg size 600 400
set xlabel "Day in July (s)"
set ylabel "Jitter (ms)"
set yrange[0:0.65]
set output "ntpq_month_07.svg"
do for [k=10:31]{
stats input.k."_pps" using ($8*1000.0) nooutput name "PPS"
stats input.k."_rz1" using ($8*1000.0) nooutput name "RZ1"
stats input.k."_rz2" using ($8*1000.0) nooutput name "RZ2"
set "ntpq_month_07.svg"
print sprintf('%d: %f', k, PPS_max)
print sprintf('%d: %f', k, RZ1_max)
print sprintf('%d: %f', k, RZ2_max)
print sprintf('%d: %f', k, PPS_mean)
print sprintf('%d: %f', k, RZ1_mean)
print sprintf('%d: %f', k, RZ2_mean)
}
当然,你的svg文件不包含任何输出,因为你不会绘制任何内容。