Вырезать значения по интервалам и построить тепловую карту в ggplot2 - PullRequest
0 голосов
/ 14 июля 2020

Учитывая следующий фрейм данных:

df <- structure(list(year = c(2001L, 2001L, 2001L, 2001L, 2002L, 2002L, 
2002L, 2002L, 2003L, 2003L, 2003L, 2003L), quater = c(1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), value = c(4L, 23L, 14L, 
12L, 6L, 22L, 45L, 12L, 34L, 15L, 3L, 40L)), class = "data.frame", row.names = c(NA, 
-12L))

Out:

    year  quater  value
0   2001       1      4
1   2001       2     23
2   2001       3     14
3   2001       4     12
4   2002       1      6
5   2002       2     22
6   2002       3     45
7   2002       4     12
8   2003       1     34
9   2003       2     15
10  2003       3      3
11  2003       4     40

Как я могу построить диаграмму, похожую на график ниже:

enter image description here

Please note the year and quater in this dataset correspondent to year and week to the plot above.

I need to first cut the value column by (0, 10], (10, 20], (20, 30], (30, 40], (40, 50] then plot them.

The code I have tried:

ggplot(df, aes(week, year, fill= value)) + 
  geom_tile() +
  scale_fill_gradient(low="white", high="red")

Out:

введите описание изображения здесь

Как видите, легенда отличается от того, что мне нужно.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 14 июля 2020

Сначала вы должны использовать cut, чтобы получить классы (как уже упоминал Ронак Шах), а затем вы можете использовать scale_fill_brewer, чтобы изменить цвет плиток.

library(tidyverse)

df %>%
  mutate(class = cut(value, seq(0, 50, 10))) %>%
  ggplot(aes(quater, year, fill = class) ) + 
  geom_tile() + 
  scale_fill_brewer(type = "seq",
                    direction = 1,
                    palette = "RdPu")

Участок под плитку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...