Gnuplot: как сделать графики рассеяния с прозрачными точками

введите описание изображения здесь

Как я могу построить изображение с частичными прозрачными точками рассеяния, как на картинке с gnuplot? Проблема в том, что я не знаю, как настроить точки на прозрачность.

Ответ 1

Попробуйте следующее:

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

который выводит введите описание изображения здесь

Как вы можете видеть, вы можете указать для каждого набора данных, использовать ли прозрачность и какой цвет использовать.
Если ваши данные состоят из двух значений (x и y позиции круга), вы должны указать радиус круга через set style circle .... Если ваши данные имеют три строки, вы можете использовать третье значение, чтобы указать радиус окружности для каждой точки данных.
Вы можете играть с уровнем прозрачности, который колеблется от 0 (полная прозрачность) до 1 (без прозрачности).

Ответ 2

Вы можете использовать альфа-канал argb вместе с 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.

Это оставляет некоторый egde вокруг каждого круга, вероятно, эффект непрозрачности от круга плюс заполненный круг поверх него. К сожалению, нет опции edgecolor, как в matplotlib, чтобы контролировать это. Замена заполненных кругов 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 сдвигает его в альфа-канал.

enter image description here

Обратите внимание, что на вашем участке только плотные области, похоже, имеют эффект прозрачности, но не точки разброса в фоновом режиме.