Linecolor(不是那样)变量

时间:2012-12-17 12:06:23

标签: colors gnuplot average boxplot

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

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

每个数据文件中都需要一个额外的列,用于指定linecolor。如果我有这样一个专栏,或者我可以放心添加它,哪个工作正常。

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

这似乎是一个真正容易出现的问题,要么通过我无法找到的某些命令解决,要么可以通过从不同的文件中获取线条样式,这对于所有图形都是相同的(如果在gnuplot中有效) )。

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

有时候,只需在箱线图中添加平均值即可。

1 个答案:

答案 0 :(得分: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命令,或者某种黑客攻击)。

我相信你需要gnuplot 4.6或某种黑客攻击。一个这样的黑客(使用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这样的东西就足够了。