Gnuplot RGB-альфа-стиль линий и большие проблемы с int - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь создать собственную палитру прозрачных цветов с помощью gnuplot:

a=127
rgb(i,a)=int(255*256**(i%3)+(i/3)*96*256**((i+1)%3)+a*256**3)

, тогда я получаю нужные цвета:

plot x w l lc rgb rgb(0,a) lw 32, x+1 w l lc rgb rgb(1,a) lw 32

Проблема, если a равно или больше 128, int возвращает отрицательное число, которое затем не распознается как цвет. Есть ли способ получить неподписанный int в gnuplot? Или любой другой способ получить числа, понимаемые как шестнадцатеричные, помимо # 80000000?

1 Ответ

3 голосов
/ 24 апреля 2020

Используйте оператор смещения влево без знака <<, отметьте help operators binary.

Также проверьте это: { ссылка }

Код:

### create your own transparent palette
reset session

# a,r,g,b should be integers between 0 and 255 (or 0x00 and 0xff)
a = 127   # transparency
r = 0xff  # red
g = 0x00  # green
b = 0x00  # blue
myColor(a,r,g,b) = (a<<24) + (r<<16) + (g<<8) + b

# put some objects in the background to demonstrate transparency
set object 1 rect from -7,0 to -3,250 fs solid 1.0 fc rgb "green" behind
set object 2 rect from 3,0 to 7,250 fs solid 1.0 fc rgb "blue" behind

plot for [a=0:250:10] a w l lw 5 lc rgb myColor(a,r,g,b) notitle
### end of code

Результат:

enter image description here

...