How to make scatter plots with transparent points

后端 未结 2 1014
别跟我提以往
别跟我提以往 2020-12-05 14:59

How can I plot an image with partial transparent scatter points just like in this picture with gnuplot? The problem is I don\'t know how to set the points to be tra

相关标签:
2条回答
  • 2020-12-05 15:31

    Try this:

    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
    

    which outputs

    As you can see, you can specify for each data set whether to use transparency and which color to use.
    If your data consist of two values (x and y position of the circle) you have to specify the circle's radius via set style circle .... If your data has three rows, you can use the third value to specify the circle's radius for each data point.
    You can play with the transparency level, which ranges from 0 (full transparency) to 1 (no transparency).

    0 讨论(0)
  • 2020-12-05 15:53

    You can use the alpha channel of argb along with 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.

    This leaves some egde around each circle, probably an opacity effect from a circle plus a filled circle on top of it. Unfortunately, there is no edgecolor option as in matplotlib to control this. Replacing filled circles pt 7 with open circles but thick linewidth pt 6 lw 6 can mitigate this a bit

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

    pt 6 lw 6.

    One can also emulate a variable transparency with lc rgb variable

    set samp 50
    pl '+' us 1:1:(0x00AAFF+(int(0xFF*$1/10.)<<24)) pt 7 lc rgb variable ps 3
    

    where int(0xFF*$1/10.) maps the input from 0..10 into 0..255 and <<24 shifts it into the alpha channel.

    enter image description here

    Note that in your plot only the dense regions seem to have a transparency effect, but not the scatter points in the background.

    0 讨论(0)
提交回复
热议问题