Gnuplot: прозрачность точек данных при использовании палитры - PullRequest
3 голосов
/ 16 февраля 2020

Есть ли способ построить прозрачные точки данных при использовании палитры?

В настоящее время у меня есть следующий код:

set style fill transparent solid 0.2 noborder
set palette rgb 22,13,-22
plot 'mydata.dat' u 1:2:3 ps 0.3 palette

Мне кажется, что прозрачность перезаписывается аргументами сюжетная команда.

1 Ответ

3 голосов
/ 17 февраля 2020

Есть ли способ построить прозрачные точки данных при использовании палитры?

Если вы отметите help palette, вы не найдете (или я упустил) утверждение о прозрачности в палитре , Похоже, вы можете установить палитру по-разному для RGB, но не для ARGB (A = альфа-канал для прозрачности). Итак, я предполагаю, что с палитрой невозможно иметь прозрачность (пожалуйста, поправьте меня, если я ошибаюсь). В качестве обходного пути вы должны установить прозрачность «вручную», установив цвет с некоторой прозрачностью. Вы можете найти формулы позади палитр, набрав show palette rgbformulae.

В следующих примерах создается график со случайными точками в xrange[0:1] и yrange[0:1] и размером случайных точек (от 2 до 6) и случайным прозрачность (от 0x00 до 0xff). Цвет определяется x в соответствии с вашей «ручной палитрой». Я надеюсь, что вы можете адаптировать этот пример к вашим потребностям.

Код:

### "manual" palette with transparency
reset session

# These are the rgb formulae behind palette 22,13,-22
set angle degrees
r(x) = 3*x-1 < 0 ? 0: (3*x-1 > 1) ? 1 : 3*x-1
g(x) = sin(180*x)
b(x) = 1-(3*x-1) < 0 ? 0: (1-(3*x-1) > 1) ? 1 : 1-(3*x-1)

set xrange [0:1]
set yrange[-0.1:1.1]

RandomSize(n) = rand(0)*4+2              # random size from 2 to 6
RandomTransp(n) = int(rand(0)*0xff)<<24  # random transparency from 0x00 to 0xff
myColor(x) = (int(r(x)*0xff)<<16) + (int(g(x)*0xff)<<8) + int(b(x)*0xff) + RandomTransp(0)

set samples 200
plot '+' u (x=rand(0)):(rand(0)):(RandomSize(0)):(myColor(x)) w p pt 7 ps var lc rgb var not

### end of code

Результат:

enter image description here

...