Переработка цветовой палитры в Gnuplot - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно создать дискретную палитру цветов только с несколькими цветами, скажем:

set palette defined (0 'red', 1 'red', 1 'green',\ 
                     2 'green', 2 'blue', 3 'blue',\
                     3 'yellow', 4 'yellow')

, которое будет применяться определенное количество раз к уникальному матричному файлу данных, то есть путем повторного использования палитры. Предположим, что матричный файл данных содержит целые числа от 0 до 16. Палитра будет применяться четыре раза: сначала для данных в [0:4]; второй для [4:8], третий для [8:12] и четвертый для [12:16]. Окончательный результат, который я ожидаю, - это тепловая карта (2D-изображение) с четырьмя цветами.

Я пробовал следующую палитру:

set palette defined ( (k%4==0)'red',   (k%4==1)'red',\
                      (k%4==1)'green', (k%4==2)'green',\
                      (k%4==2)'blue',  (k%4==3)'blue',\
                      (k%4==3)'yellow',(k%4==4)'yellow' )

где 'k' - элемент матричного файла данных. Моя проблема состоит в том, чтобы определить «к». Конечно, это можно сделать с помощью некоторого кодирования файла данных, но я потеряю оригинальную информацию.

Есть ли способ определить такую ​​"палитру утилизации"?

1 Ответ

1 голос
/ 12 апреля 2019

Оставьте палитру такой, какая она есть, и примените циклический повтор на этапе ввода данных.Исходная команда:

set cbrange [0:4]
set view map
splot $data matrix using 1:2:3 with image

Значение данных, отфильтрованное для циклического перемещения по палитре, отображается на [0: 4]

splot $data matrix using 1:2:(floor($3)%4) with image
...