情况
两个计量装置(A、B)提供如下数据
# meter A
time1 14.5
time2 9.3
time3 11.1
…
由于某种“分类”,来自 A 和 B 的时间戳可能相同(想想每小时销售的不同口味的冰淇淋蛋筒)。
目的
为了获得总量与时间的关系,我想使用“平滑频率”,这应该可以实现我想要实现的目标。
已经尝试过
两个“分箱”数据集都“绘制”(设置表 $DB)到内部的此处文档或磁盘上的临时文件中。但数据集之间用空行分隔。
# meter A
time1 14.5
time2 9.3
time3 11.1
…
# meter B
time2 8.2
time3 2.8
...
是否可以使用“平滑频率”对整个数据文件进行处理,以获得类似
# meter A+B
time1 14.5
time2 17.5
time3 13.9
…
仅使用 gnuplot?如果是 - 怎么办?
注意:该解决方案应在 Windows 下运行,无法安装其他软件。(最坏的情况:将组合数据绘制到文件中并删除编辑器中的空白行...)
答案1
我将尝试回答我自己的问题,因为现在我的问题似乎已经解决了。
数据设置
File: "A.dat"
2.3 8.2
3 7
4.3 6.3
1 9
3.3 7.3
2 8
4 6
1.3 9.1
File: "B.dat"
1.1 1.1
3 3
3.1 3.3
2 2
1 1
4.1 4.4
2.1 2.1
4 4
我的解决方案很大程度上依赖于“内存文件”(此处的文档),但我假设(不是测试!)它也适用于磁盘上的临时文件。
下面的脚本可能不太复杂,但是它可以起作用:
set xrange [0:5]
set yrange [0:*]
# simple binnig function (good enough for this demo)
binwidth = 1.0
bin(x) = binwidth * floor(x/binwidth)
# transfer original data to in-memory-files
set table $A_orig
plot "A.dat" with table
unset table
set table $B_orig
plot "B.dat" with table
unset table
# binning into new in-memory-file
set table $A_bin
plot $A_orig using (bin($1)):2
unset table
set table $B_bin
plot $B_orig using (bin($1)):2
unset table
# using in memory-files
# unique-filter: x -> avg(y)
set table $A_uniq
plot $A_bin smooth unique
unset table
set table $B_uniq
plot $B_bin smooth unique
unset table
# unite the different 'uniqued' datasets
# important: use plotstyle "with table"!
set table $AB_unite
plot $A_uniq with table, \
$B_uniq with table
unset table
# apply smooth frequency (x->sum(y))
set table $AB_tmp
plot $AB_unite smooth freq
unset table
# create final in-memory-file
set table $AB_freq
plot $AB_tmp with table
unset table
# plot all results
plot $A_orig with points pointsize 2 title "A (original)", \
$B_orig with points title "B (original)", \
$A_bin with points title "A (binned)", \
$B_bin with points title "B (binned)", \
$A_uniq with linespoints title "A (binned,unique)", \
$B_uniq with linespoints title "B (binned,unique)", \
$AB_freq with linespoints title "A+B (binned,unique,frequency)"
# clean
undef $A_*
undef $B_*
undef $AB_*
重要的技巧不仅仅是使用“设置表“,但要找出何时使用 plotstyle”带桌子“ 也一样。