Как получить плавную кривую плотности по дискретной оси X? - PullRequest
1 голос
/ 17 октября 2019

У меня есть дискретная ось X с небольшим количеством уровней. Я хочу плавную кривую, показывающую распределение. Когда я сохраняю gear в качестве фактора, я получаю столбики, которые не совсем то, что я ищу, и когда я использую gear в качестве числового значения, я получаю неравномерное распределение, которое тоже не то, что я ищу.

Есть ли у кого-нибудь совет показать плавное распределение для дискретных данных?

library(tidyverse)

mtcars %>% 
  group_by(gear) %>% 
  summarise(mpg = mean(mpg)) %>% 
  ggplot(aes(factor(gear), mpg)) +
  geom_density(stat = "identity")

discrete_distribution

1 Ответ

1 голос
/ 18 октября 2019

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

Но если предположить, что это имеет смысл для вашего варианта использования, выможет подойти к этому путем преобразования ваших факторов в числовые непрерывные данные «под капотом», а затем адаптировать ваши метки обратно к категориальному типу. Например:

mtcars %>% 
  mutate(gear = as.factor(gear)) %>%
  group_by(gear) %>% 
  summarise(mpg = mean(mpg)) %>%
  mutate(factor_num = as.numeric(gear)) -> temp

ggplot(temp, aes(x = factor_num, y = mpg)) +
  # This geom draws a smooth line through your points
  ggalt::geom_xspline(spline_shape = -0.5) +
  geom_point() +
  scale_x_continuous(breaks = temp$factor_num, labels = temp$gear, name = "gear") +
  expand_limits(y = 0)

enter image description here

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