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"
我想在 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"