GNUPlot:如何为每个x值创建一个boxplot?

Joh*_*ohn 5 plot gnuplot points boxplot

我有一个带有一组不同x值的点的图:x = 0.5为5点,x = 0.6为5点,x = 1.4为5点,x = 1.6为5点.

现在我想为每个x值创建一个boxplot.但不知何故,我所有的箱图都在x = 0.5.我希望在正确的x值下创建箱图.2 x值之间的距离可以不同.我当前的x值是0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4和1.6,但它们对于不同的图也可以是不同的.我该怎么办?

这是我的观点的GNUPlot脚本:https://dl.dropboxusercontent.com/u/26464165/Points.gnu

这是我的箱图的GNUPlot脚本:https://dl.dropboxusercontent.com/u/26464165/Boxplots.gnu

谢谢你的时间!

Chr*_*oph 9

您必须重新排列箱图的数据.统计数据是在完整列上计算的.因此,您必须重新排列数据,如:

# 1.0 1.2 1.4 ...
2.2 2.2 3.06
2.0 2.46 2.93
2.2 2.46 3.06
2.0 2.4 2.8
1.73 2.33 2.8
Run Code Online (Sandbox Code Playgroud)

然后你可以绘制它:

set style fill solid 0.25 border -1
set style boxplot outliers pointtype 7
set style data boxplot

set title 'My Plot' font 'Arial,14';
set xtics ('1.0' 1, '1.2' 2, '1.4' 3)
plot for [i=1:3] 'data.txt' using (i):i notitle
Run Code Online (Sandbox Code Playgroud)

4.6.4的结果是:

在此输入图像描述

xtics您可以使用Unix命令行工具提取它们,而不是手动编写,如/sf/answers/755944311/所示:

header = "`head -1 data.txt | cut -b 2-`"
set for [i=1:words(header)] xtics (word(header, i) i)
Run Code Online (Sandbox Code Playgroud)


Qua*_*lia 6

如果您提前知道级别(列)的数量及其名称(xtics),那么 Christoph 的回答很好。否则,http://soc.if.usp.br/manual/gnuplot-doc/htmldocs/boxplot.html给出了using语句的第四个字段( using x:data:width:level)的解决方案。

您将所有数据放在一列中,随附的因子列给出了每个数据的级别:

2.2   1.0
2.2   1.2
3.06  1.4
2.0   1.0
...
Run Code Online (Sandbox Code Playgroud)

只要级别正确,数据出现的顺序无关紧要。该级别被转换为一个字符串,它会覆盖 xtics。

修改 Christoph 的脚本,

set style fill solid 0.25 border -1
set style boxplot outliers pointtype 7
set style data boxplot

plot "data.txt" using (1):1:(0.5):2
Run Code Online (Sandbox Code Playgroud)

将生成以下内容:

使用因子列使用 GNUPlot 生成的箱线图