1

我正在尝试在箱线图中显示数据,并添加一些内容。在箱线图之上,我还想打印所有数据点,因为没有那么多。将有许多并排的箱线图,并且数据点将对应,因此一个图中的每个数据点将在另一个箱线图中表示,但是它们的顺序可以改变。这就是为什么我想给点上色。到目前为止我得到了这个:

plot    data using (1):($1) with boxplot,\
            data using (1):($1) with points lc variable
            [more plots...]

这需要在每个数据文件中添加一个额外的列,用于指定线条颜色。如果我有这样的专栏,或者如果我愿意添加它,那效果很好。

是否有另一种方法来遍历线条样式(或颜色),所以它用样式 1 绘制第一个点,用样式 2 绘制第二个点等?

这似乎是一个非常简单的问题,要么通过我似乎无法找到的某些命令解决,要么通过从不同文件中获取线型来解决,这对于所有绘图都是相同的(如果在 gnuplot 中有效)。

此外,我想知道 boxplot 命令是否还具有能够绘制平均值的附加功能(或者我是否绝对需要 gnuplot 4.6 中的 stats 命令,或者某种 hack)。

有时能够简单地将平均值添加到箱线图中真是太好了。

4

1 回答 1

1

是否有另一种方法来遍历线条样式(或颜色),所以它用样式 1 绘制第一个点,用样式 2 绘制第二个点等?

是的。Gnuplot 提供了许多pseudo-columns. 要获取更多信息,请参阅

help datafile using pseudocolumn

但它的要点是你可以使用column(0)它。我相信迭代从 0 开始。由于没有ls 0,因此您需要添加 1。

plot data using (1):($1) with boxplot,\
     data using (1):($1):(column(0)+1) with points lc variable

此外,我想知道 boxplot 命令是否还具有能够绘制平均值的附加功能(或者我是否绝对需要 gnuplot 4.6 中的 stats 命令,或者某种 hack)。

我相信您需要 gnuplot 4.6 或某种 hack。一种这样的 hack(可以使用 gnuplot 4.4,但不是更早的版本)可能是:

sum=0.0
npt=0
compute_sum_npt(x)=(npt=npt+1,sum=sum+x,NaN)
set term unknown
plot data u 1:(compute_sum_npt($1))
avg=sum/npt

set term ...
set output ...
plot data using (1):($1) with boxplot,\
     data using (1):($1):(column(0)+1) with points lc variable,\
     avg w lines ls -1

如果您的 gnuplot 版本早于 4.4,则需要使用 shell 命令来计算平均值。类似的东西awk就足够了。

于 2012-12-17T12:12:44.540 回答