Gnuplot:如何使用透明点制作散点图

时间:2015-12-30 15:43:02

标签: gnuplot transparent point scatter

enter image description here

如何使用gnuplot绘制具有部分透明散点的图像,就像在此图片中一样?问题是我不知道如何将点设置为透明。

2 个答案:

答案 0 :(得分:14)

试试这个:

set style fill  transparent solid 0.35 noborder
set style circle radius 0.02
plot 'test' u 1:2 with circles lc rgb "blue", \
     '' u 1:2 every 100 w circles lc rgb "red" fs solid 1.0 border lt -1

哪个输出 enter image description here

如您所见,您可以为每个数据集指定是否使用透明度以及使用哪种颜色 如果您的数据包含两个值(圆的x和y位置),则必须通过set style circle ...指定圆的半径。如果您的数据有三行,则可以使用第三个值指定每个数据点的圆的半径 您可以使用透明度级别,范围从0(完全透明)到1(不透明)。

答案 1 :(得分:6)

您可以将argb的alpha通道与lc rgb variable一起使用

set samp 2000
randn(x) = invnorm(rand(x))
pl [-3:3][-3:3] '+' us (randn(0)):(randn(0)):(0xBB00AAFF) lc rgb variable pt 7 ps 2

lp 7

这会在每个圆周围留下一些eegde,这可能是一个圆的不透明效果加上其顶部的实心圆。不幸的是,没有matplotlib中的edgecolor选项可以控制它。用空心圆代替实心圆pt 7,但粗线宽pt 6 lw 6可以减轻这一点

pl [-3:3][-3:3] '+' us (randn(0)):(randn(0)):(0xBB00AAFF) lc rgb variable pt 6 lw 6

pt 6 lw 6

还可以使用lc rgb variable

来模拟可变透明度
set samp 50
pl '+' us 1:1:(0x00AAFF+(int(0xFF*$1/10.)<<24)) pt 7 lc rgb variable ps 3

其中int(0xFF*$1/10.)将输入从0..10映射到0..255,<<24将其转换到alpha通道。

enter image description here

请注意,在您的绘图中,只有密集区域似乎具有透明效果,而在背景中则没有散点。