Gnuplot: как строить цветные квадраты для температуры каждого месяца?

Я хотел бы построить следующий рисунок (из Основы визуализации данных), используя gnuplot:

color

Я ожидаю, что данные для каждого местоположения будут примерно такими:

# month temperature
01 60.0
02 78.0
03 90.0
...
12 78.0

Вот что я пробовал. Для простоты я перенес данные в матрицу.

$data << EOD
1.50 1.57 1.85 2.15 1.87 1.05 1.70 1.65 1.97 1.71 1.53 1.15
4.44 4.71 4.74 3.50 3.43 4.98 4.29 4.55 3.93 3.34 3.74 4.88
8.55 9.59 5.65 0.13 9.33 4.70 8.94 7.74 4.49 6.26 0.96 1.20
EOD

unset border
unset ytics
set xlabel 'month'

set palette rgbformula -7,2,-7
set cbrange [0:10]
set cblabel "precipitation"
set xrange [-0.5:11.5]
set yrange [-0.5:2.5]
set xtics ("Jan" 0, "Feb" 1, "Mar" 2, "Apr" 3, "May" 4, \
"Jun" 5, "Jul" 6, "Aug" 7, "Sep" 8, "Oct" 9, "Nov" 10, "Dec" 11)
plot $data matrix with image

Но эффект далеко не удовлетворительный. Например, как создать четкие границы между квадратами?

enter image description here

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Стиль прорисовки with image наверное не может иметь границ. Итак, я бы использовал универсальный стиль with boxxyerror. Кроме того, вместо матричного формата я бы добавил заголовок строки и перебрал столбцы (поскольку всегда будет 12 месяцев). Проверьте следующий пример, а также help boxxyerror, help size, help xticlabels и help strftime для дальнейшего чтения.

Если у вас есть данные в отдельных файлах, вам придется соответствующим образом изменить сценарий.

Скрипт:

### plotting style boxxyerror as replacement for "with image"
reset session

$Data << EOD
# location  Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
Atlantis    1.50  1.57  1.85  2.15  1.87  1.05  1.70  1.65  1.97  1.71  1.53  1.15
Mordor      4.44  4.71  4.74  3.50  3.43  4.98  4.29  4.55  3.93  3.34  3.74  4.88
Wonderland  8.55  9.59  5.65  0.13  9.33  4.70  8.94  7.74  4.49  6.26  0.96  1.20
EOD

unset border
set xlabel 'month'
set xrange [0.5:12.5]

set yrange [:] reverse
set ytics

set palette rgbformula -7,2,-7
set cbrange [0:10]
set cblabel "precipitation"

MonthName(n) = strftime("%b",24*3600*28*n)      # get the month name from 1..12
set key noautotitle
set style fill solid 1.0 border rgb "white"
set size ratio -1       # make the boxes squares

plot for [i=1:12] $Data u (i):0:(0.5):(0.5):i+1:  \
        xtic(MonthName(i)):ytic(1) w boxxy fc palette lw 2
### end of code

Результат:

enter image description here

Вы великий мастер gnuplot!

chenzhongpu 17.05.2022 09:47

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