我正在尝试在一个包含一些附加内容的箱线图中显示数据。 在箱线图的顶部,我还想打印所有数据点,因为没有那么多。 将有许多箱形图并排,数据点将对应,因此一个图中的每个数据点将在另一个箱图中表示,但是它们的顺序可以改变。这就是为什么我要为这些点着色。 到目前为止我得到了这个:
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命令,或者某种黑客攻击)。
有时候,只需在箱线图中添加平均值即可。
答案 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
这样的东西就足够了。