Как заполнить цвет в ggridges на основе эстетики высоты?

#r #ggridges

Вопрос:

Я пытаюсь создать график ggridges с подсчетом случаев Covid19 для разных штатов. Я хотел бы заполнить цвет на основе количества случаев, а не на основе состояний, но не смог этого сделать.

До сих пор я пытался использовать приведенный ниже код:

 library(tidyverse)
library(lubridate)
library(ggridges)


df_ind_stacked_daily <- read.csv(url("https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/df_ind_stacked_daily.csv")) %>% 
  mutate(Date = ymd(Date))
 

рабочий код:

 df_ind_stacked_daily %>%
  filter(Daily_cases_type == "Daily_confirmed",
         State.UnionTerritory != "India") %>% 
  ggplot(aes(x = Date, y = State.UnionTerritory,
             height = Daily_cases_counts, group = State.UnionTerritory))  
  geom_density_ridges(stat = "identity", alpha = .8,)   # , scale = 2
  
  coord_cartesian(clip = "off")  
  theme_ridges(grid = FALSE)
 

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

Проблема: Когда я пытаюсь залить цвет на основе эстетики высоты, это не работает

 df_ind_stacked_daily %>%
  filter(Daily_cases_type == "Daily_confirmed",
         State.UnionTerritory != "India") %>% 
  ggplot(aes(x = Date, y = State.UnionTerritory, fill = Daily_cases_counts,
             height = Daily_cases_counts, group = State.UnionTerritory))  
  geom_density_ridges_gradient(stat = "identity", scale = 2, rel_min_height = 0.01, gradient_lwd = 1.)  
  coord_cartesian(clip = "off")  
  theme_ridges(grid = FALSE)
 

Ответ №1:

Проблема в том, для чего вы использовали значение rel_min_height . Не уверен, в чем причина, но вы могли бы заставить свой код работать, уменьшив значение rel_min_height до, например 0.001 , или используя значение по умолчанию 0 , как я делаю ниже:

 library(tidyverse)
library(ggridges)

df_ind_stacked_daily %>%
  filter(Daily_cases_type == "Daily_confirmed",
         State.UnionTerritory != "India") %>% 
  ggplot(aes(x = Date, y = State.UnionTerritory, fill = Daily_cases_counts,
             height = Daily_cases_counts, group = State.UnionTerritory))  
  geom_density_ridges_gradient(stat = "identity", scale = 2, gradient_lwd = 1)  
  coord_cartesian(clip = "off")  
  theme_ridges(grid = FALSE)  
  #theme(legend.position = "bottom")  
  labs(fill = NULL)
 

Комментарии:

1. Спасибо @Стефан, я пытаюсь ggridges в первый раз и пробовал код из примеров, доступных в блогах, и устал изменять с высотой, и в процессе не понимал, что rel_min_height это может быть проблемой. Ценю вашу помощь !!