#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
вместо этого, если хотите.