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