gnuplot:如何为“with points”设置不同的填充和边框颜色?

gnuplot: how to set the different fill and border colors for `with points`?

我想在 gnuplot 中实现类似的 effect

这是我尝试过的:

unset key
set style line 11 lc rgb '#808080' lt 1
set border 3 ls 11
set tics nomirror
set grid

set style line 1 lc rgb '#808080' pt 9 ps 3
set style line 2 lc rgb '#808080' pt 20 ps 3
set style line 3 lc rgb '#BD3828' pt 7 ps 3

set yrange [4:9]
$data << EOD
5   5.1
5.3 6.8
6   6
EOD

$data2 << EOD
5 5
7 7
8 6
EOD

$data3 << EOD
5.5 7
6 6
7 7.1
EOD

plot $data u 1:2 w points ls 1, $data2 u 1:2 w points ls 2, \
$data3 u 1:2 w points ls 3

正如我们所见,点可以重叠。那我们怎样才能使重叠区域变暗呢?


一个可能的解决方案是设置透明度(例如,lc rgb '#80808080'),但它也会使边框和填充都透明。那么如何为with points设置不同的填充颜色和边框颜色呢?

另一种解决方案是使用set object,但我们需要做更多的工作才能从文件中读取数据。

我认为最接近您所描述的是分两次绘制点。

第一遍:使用只产生轮廓的点类型绘制(点类型N = 4 6 8 10 12 ...)。

第二遍:使用仅产生内部的相应点类型 N+1 进行绘制,使用相同的颜色但添加 alpha 通道值以使其部分透明。

set print $RAND1
do for [i = 1:50] { print rand(0), rand(0) }
unset print
set print $RAND2
do for [i = 1:50] { print rand(0), rand(0) }
unset print

set pointsize 4

plot $RAND1 with points pt  8 lc rgb "#00b8860b", \
         '' with points pt  9 lc rgb "#AAb8860b", \
     $RAND2 with points pt  6 lc rgb "#00c04000", \
         '' with points pt  7 lc rgb "#AAc04000"