Как создать несколько линий сглаживания в ggvis?

#r #ggvis

#r #ggvis

Вопрос:

Это код для создания линейной диаграммы с более плавным

 mtcars %>% 
    ggvis(~wt, ~mpg) %>%
    layer_lines() %>%
    layer_smooths()
  

И это разложит на vs и построит две линии разных цветов:

 mtcars %>% 
    ggvis(~wt, ~mpg, stroke= ~ as.factor(vs)) %>%
    layer_lines()
  

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

 mtcars %>% 
    ggvis(~wt, ~mpg, stroke= ~ as.factor(vs)) %>%
    layer_lines() %>%
    layer_smooths()
  

Ответ №1:

Вы можете задать группировку с помощью dplyr::group_by :

 library(dplyr)
library(ggvis)

mtcars %>% 
    mutate(vs = factor(vs)) %>%
    ggvis(~wt, ~mpg, stroke = ~vs) %>%
    group_by(vs) %>% 
    layer_lines() %>%
    layer_smooths()
  

постройте график с двумя сглаживаниями

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

1. Спасибо, не могли бы вы объяснить, зачем мне это нужно group_by и группировка не передается просто в атрибуте stroke ?

2. Здесь есть пример и документация на ?layer_smooths и ?ggvis::group_by , но я думаю, что при вычислении преобразования данных вам нужно явно задать группировку. Честно говоря, ggvis все еще довольно альфа-версия, поэтому поведение еще может измениться.

3. Спасибо. И, кстати, я не смог приступить к работе с моим исходным примером, потому что у меня мало df для вычисления более плавного I guess…it было бы здорово иметь своего рода «сглаживатель», который просто улучшил бы внешний вид диаграммы за счет удаления острых углов в linechart

4. Вы можете настроить его для использования любого количества сглаживателей; смотрите ?layer_model_predictions (который является более общей формой layer_smooths ) и ?compute_model_predictions , в котором есть более подробная информация об адаптации его из loess / gam (значения по умолчанию зависят от того, сколько у вас точек) в lm , glm или еще чего-то.

5. Вы также можете использовать auto_group вместо этого, если хотите.