Comment puis-je tracer une image avec des points de dispersion transparents partiels comme dans cette image avec gnuplot? Le problème est que je ne sais pas comment définir les points pour qu'ils soient transparents.
Essaye ça:
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
Comme vous pouvez le voir, vous pouvez spécifier pour chaque ensemble de données s'il faut utiliser la transparence et la couleur à utiliser.
Si vos données consistent en deux valeurs (position x et y du cercle), vous devez spécifier le rayon du cercle via set style circle ...
. Si vos données ont trois lignes, vous pouvez utiliser la troisième valeur pour spécifier le rayon du cercle pour chaque point de données.
Vous pouvez jouer avec le niveau de transparence, qui va de 0 (transparence totale) à 1 (pas de transparence).
Vous pouvez utiliser le canal alpha d'argb avec 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
.
Cela laisse un peu d'egde autour de chaque cercle, probablement un effet d'opacité d'un cercle plus un cercle rempli au-dessus. Malheureusement, il n'y a pas d'option edgecolor comme dans matplotlib pour contrôler cela. Le remplacement des cercles remplis pt 7
Par des cercles ouverts mais une largeur de ligne épaisse pt 6 lw 6
Peut atténuer un peu cela
pl [-3:3][-3:3] '+' us (randn(0)):(randn(0)):(0xBB00AAFF) lc rgb variable pt 6 lw 6
.
On peut aussi émuler un transparence variable avec lc rgb variable
set samp 50
pl '+' us 1:1:(0x00AAFF+(int(0xFF*$1/10.)<<24)) pt 7 lc rgb variable ps 3
où int(0xFF*$1/10.)
mappe l'entrée de 0..10 à 0..255 et <<24
la déplace dans le canal alpha.
Notez que dans votre tracé, seules les régions denses semblent avoir un effet de transparence, mais pas les points de dispersion en arrière-plan.