【问题标题】:Linecolor (not so) variableLinecolor(不是这样)变量
【发布时间】:2012-12-17 12:06:22
【问题描述】:

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

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)。

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

【问题讨论】:

    标签: colors gnuplot average boxplot


    【解决方案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-02-15
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多