Логарифмическая цветовая шкала Gnuplot

Я делал двумерные графики шаблонов с помощью GNUPLOT, но мне нужно, чтобы цвет был в логарифмической шкале, но только цвет, а не числовые значения и соответствующие им тики в столбце цвета. Есть ли способ сделать это?

Вот пример одного файла данных для генерации изображения. В GNUPLOT я использую следующие команды (или скрипт):

set size square 1,1
set cbrange [0:2]
set pm3d map
set palette defined ( 0 'gray30', 0.75 'gray20', 1.35 'cyan')
splot 'Sq.dat' with pm3d

Ваши данные варьируются от 0 (и 6,5e-6 как наименьшее значение> 0) до 144. Как именно вы хотите сопоставить этот диапазон с цветом? Должны ли 6.5e-6 соответствовать «серому30», а 144 — «голубому» с логарифмическим переходом? А как насчет более темного серого 20 между ними? Откуда берутся значения 0, 0,75 и 1,35 в вашей определенной палитре?

theozh 25.04.2023 09:41

Это был просто пример, а не реальная попытка с логарифмической шкалой. Я бы хотел логарифмический «градиент» только с одним цветом, если это возможно. Я предположил, что, если это возможно, черный будет иметь самые низкие значения, а «полный» голубой — самые высокие. Значения 0, 0,75 и 1,35 относятся к диапазону [0,2] в этом примере, они являются случайным выбором значений, чтобы попытаться построить градиент с тремя цветами, которые сохраняют детали на самых низких значениях.

koy 25.04.2023 15:38

Почему вы не хотите использовать set logscale cb? Если у вас есть определенный цвет на графике, вы хотите найти его на цветовой шкале, которая, конечно же, имеет логарифмические тики.

theozh 25.04.2023 16:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В консоли gnuplot отметьте help palette и help palette functions. Есть вариант functions. Для каждого из цветовых компонентов (R, G, B) вы определяете функцию, которая имеет переменную gray в качестве входных данных (диапазон [0:1]) и должна иметь диапазон [0:1] в качестве выходных данных. Если вы наберете test palette, вы можете проверить вывод палитры.

Если все ваши функции для R, G, B начинаются с 0, это будет черный цвет. Если функции для G и B заканчиваются на 1, а R остается на 0, это будет голубым.

Также есть 37 предопределенных функций при использовании опции set palette rgbformulae: отметьте help palette rgbformulae и show palette rgbformulae.

Примеры:

# Linear:
set palette functions  0, gray, gray
test palette

# Square:
set palette functions  0, gray**2, gray**2
test palette

# Square Root:
set palette functions  0, sqrt(gray), sqrt(gray)
test palette

# Some logarithm: (play with x0)
f(x,x0) = log((x+x0)/x0)/log((1+x0)/x0)
x0 = 0.01
set palette functions  0, f(gray,x0), f(gray,x0)
test palette

Дополнение: (ваши данные с logscale cb)

Скрипт:

### logscale cb
reset session

FILE = "SO76096868.dat"

set size ratio -1
set palette functions 0, gray**2, gray**2
# set palette rgbformulae 33,13,10     #  alternatively, multiple colors

set view map
set logscale cb
set format cb "10^{%T}"
set xrange [:] noextend
set yrange [:] noextend

splot FILE u 1:2:3 w pm3d
### end of script

Полученные результаты:

Другие вопросы по теме