Как изменить значения цветовой шкалы на меньшие приращения - PullRequest
1 голос
/ 25 января 2020

У меня есть карта побережья Новой Шотландии. Я хочу среднюю температуру за месяц через океан. Разница по месяцам составляет около 0,01 градуса. Минимальное и максимальное значение ave_temp составляет 1,18-1,6. поэтому мой фрейм данных должен выглядеть так:

month    ave temp

may       1.18
may       1.18
jun       1.19
jul       1.20
jul       1.20
jan       1.60
jan       1.60
dec       1.52
nov       1.51

, поэтому, когда я рисую градиент цвета по океану, используя эти температуры, на картах почти нет разницы

это код, который я пытаюсь используйте

p + geom_rect(data = individual_dets, 
mapping = aes(xmin = -62.8, xmax = -64.5, ymin = 42.7, ymax = 45, 
fill = individual_dets$ave_temp)) +
  scale_fill_gradient2(low = "yellow", mid = "red", high = "purple")

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

enter image description here

Ответы [ 2 ]

1 голос
/ 26 января 2020

Я думаю, что ваш xmin / xmax / ymin / ymax не может быть одинаковым для разных прямоугольников, если вы хотите видеть один цвет для каждого прямоугольника. Если они все одинаковые, вы просто строите один прямоугольник с одной заливкой. Возможно, вы используете разные грани, чтобы увидеть разные прямоугольники, но это трудно понять, не зная вашего полного кода.

Приведенный ниже пример работает без каких-либо проблем, когда xmin / xmax / ymin / ymax, с теми же цветовыми параметрами.

library(tidyverse)
c<- c(1.18,1.18,1.19,1.20,1.20, 1.60, 1.60, 1.52,1.51)
df <- expand.grid(x = (1:3), y = (1:3))
df$ave_temp <- c(1.18,1.18,1.19,1.20,1.20, 1.60, 1.60, 1.52,1.51)

ggplot() + geom_rect(data = df, 
                     aes(xmin = x-0.4,xmax = x + 0.4, 
                         ymin = y-0.4, ymax = y + 0.4, 
                         fill = df$ave_temp) )+  
  scale_fill_gradient2(low = "yellow", mid = "red", high = "purple")

, что дает следующую цифру:

enter image description here

0 голосов
/ 25 января 2020

Вы можете использовать отображение следующим образом: у вас есть цветовой круг,

colour wheel

, который вы растягиваете по линии и каждому вертикальному столбцу (который раньше был клин) - это другой цвет, представляющий один градус, и каждая строка в этом столбце, заштрихованная яркостью, будет представлять собой долю градуса. Если ваши изменения невелики, вы можете использовать каждый цвет как долю градуса, а оттенки - как долю доли.

В цветовом пространстве HSV

hsv colour space

градусов будет hue, а дроби будут value или насыщенность в этом отношении.

...