让我说我有很多表格的数据
<x-value> <y-value> <standard deviation>
当我说&#34;很多&#34;那么我的意思就是用yerrorbars来描绘每一个坐标。
我现在应该为每50行创建一个箱线图(因此,对于行[1..50]为25,对于行x = [51..100]等,为75,等等),等等。 )。
使用gnuplot最快的方法是什么?
修改
显然,我的问题不够准确:
我想获取x = 1..50的所有值,假装它们都发生在25,创建一个boxplot。取x = 51..100的所有值,假装它们都发生在75并创建一个箱线图,依此类推。
答案 0 :(得分:1)
Gnuplot可以计算箱图并按一些常见的字符串对它们进行分组。您可以使用类似
的函数创建这些字符串level(x) = sprintf("%d", (int(x)/50)*50 + 25)
使用此功能,每50个值组合成一个新的箱线图:
set style data boxplot
level(x) = sprintf("%d", (int(x)/50)*50 + 25)
plot 'file.dat' using (1):2:(0):(level($1)) notitle
注意,这里我按x值分组。如果要使用行号,请将$1
替换为$0
。另请注意,每个箱图都有自己的xticlabel,这是你无法避免的。
作为测试用例,请考虑以下脚本(因为仅在Unix平台上生成此测试用例的动态数据):
set style data boxplot
set style fill solid 0.25 noborder
set boxwidth 0.8
level(x) = sprintf("%d", (int(x)/50)*50 + 25)
plot "< seq 0 299 | awk '{print $1,$1}'" using (1):2:(0):(level($1)) notitle