gnuplot-为每这么多行创建一个箱线图

gnuplot-为每这么多行创建一个箱线图,plot,gnuplot,boxplot,summary,Plot,Gnuplot,Boxplot,Summary,假设我有很多表格的数据 <x-value> <y-value> <standard deviation> 当我说“很多”的时候,我的意思太多了,无法用耶罗巴有意义地画出每一个坐标 我现在想为,比如说,每50行创建一个箱线图(一个25行[1..50],一个75行x=[51..100],等等) 使用gnuplot最快的方法是什么 编辑 显然,我的问题不够精确: 我想取x=1..50的所有值,假设它们都发生在25,创建一个箱线图。取x=51..100的所有值,

假设我有很多表格的数据

<x-value> <y-value> <standard deviation>

当我说“很多”的时候,我的意思太多了,无法用耶罗巴有意义地画出每一个坐标

我现在想为,比如说,每50行创建一个箱线图(一个25行[1..50],一个75行x=[51..100],等等)

使用gnuplot最快的方法是什么

编辑

显然,我的问题不够精确:


我想取x=1..50的所有值,假设它们都发生在25,创建一个箱线图。取x=51..100的所有值,假设它们都发生在75,然后创建一个箱线图,依此类推。

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平台上生成此测试用例):

设置样式数据箱线图
将样式填充实体设置为0.25
将boxwidth设置为0.8
级别(x)=sprintf(“%d”),(整数(x)/50)*50+25)
使用(1):2:(0):(级别($1))notitle绘制“

@Christoph不适用,因为我对任何类型的总和都不感兴趣。我说我想要的是箱线图,而不是平均值。即,取
x=1..50的所有值,假设它们都发生在25,创建一个箱线图。取
x=51..100的所有值,假设它们都发生在75岁,并创建一个箱线图,依此类推。对不起,我误读了这个问题,希望我现在就知道了,请看我的答案。
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