结合 yerrorbars 和可变点大小

Combining yerrorbars and variable point size

我正在尝试绘制以下数据文件

#x  y   s   err
1   1   0.1 0.2
2   2   0.2 0.2
3   3   0.3 0.2
4   4   0.4 0.2
5   5   0.5 0.2
6   6   0.6 0.2
7   7   0.7 0.2
8   8   0.8 0.2
9   9   0.9 0.2
10  10  1.0 0.2

其中点的大小可变,由第 3 列给出,错误在第 4 列中给出。我可以得到

plot "test" u 1:2:3 pt 7 ps variable
plot "test" u 1:2:4 w yerrorbars pt 7

独立工作,给了我这个:

但是当我尝试将它们组合起来时

plot "test" u 1:2:4:3 w yerrorbars pt 7 ps variable

我得到一些很奇怪的东西:

yerrorbars 似乎将第 4 列用作 y 列,将第 3 列用作 yerror 列。更奇怪的是,如果我尝试 u 1:2:3:4,我会得到相同的输出。我这样做有什么问题吗?我可以手动将误差线绘制为矢量,但如果可能的话,我更愿意使用内置的误差线样式。

gnuplot> help yerrorbars

 The `yerrorbars` (or `errorbars`) style is only relevant to 2D data plots.
 `yerrorbars` is like `points`, except that a vertical error bar is also drawn.
 At each point (x,y), a line is drawn from (x,y-ydelta) to (x,y+ydelta) or
 from (x,ylow) to (x,yhigh), depending on how many data columns are provided.
 The appearance of the tic mark at the ends of the bar is controlled by
 `set errorbars`.

      2 columns:  [implicit x] y ydelta
      3 columns:  x  y  ydelta
      4 columns:  x  y  ylow  yhigh

 An additional input column (4th or 5th) may be used to provide information
 such as variable point color.

因此,为了提供超过 3 列并且仍然使用单个值作为 ydelta,您应该能够做到

plot "test" u 1:2:(-):(+):3 w yerrorbars pt 7 ps variable 

但是,正如您指出的那样,这实际上并不像记录的那样工作。

Work-around

另一种方法是进行两次传递;首先绘制误差线并抑制点,然后绘制具有所需属性的点:

unset key
plot "test" u 1:2:3 with yerrorbars pt 0, \
         "" u 1:2:4 with points pt 7 ps variable