Как создать правильный geom_boxplot? - PullRequest
0 голосов
/ 05 сентября 2018

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

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

Большое спасибо.

box_plot <- comb_rpt %>% 
filter(!is.na(oracle_contract_desc.x), 
     service_mnth %in% c('2018-01', '2018-02', '2018-03', '2018-04',
                         '2018-05', '2018-06', '2018-07')) %>% 
ggplot(aes(x = service_mnth, y = var_est_to_actual)) +
geom_boxplot()

My Weird Boxplot выглядит как точка:

img

Правильный Boxplot выглядит как фактическая коробка, с цветной заливкой

img

1 Ответ

0 голосов
/ 05 сентября 2018

Полагаю, у вас много 0 с var_est_to_actual за service_mnth.

Давайте воспроизведем «проблему».

Прежде всего, мы генерируем данные из широкой нормали и показываем графики.

set.seed(2018)
df <- setNames(data.frame(
    rnorm(100, sd = 100),
    rnorm(100, sd = 100)), c("2018-01", "2018-02"))    

library(tidyverse)
df %>%
    gather(service_mnth, var_est_to_actual) %>%
    ggplot(aes(service_mnth, var_est_to_actual)) +
    geom_boxplot()

enter image description here

Теперь мы заменим 70% наблюдений за service_mnth на 0 с и покажем блок-график снова для пересмотренных данных.

df %>%
    gather(service_mnth, var_est_to_actual) %>%
    group_by(service_mnth) %>%
    mutate(frac = (1:n()) / n()) %>%
    mutate(var_est_to_actual = if_else(frac < 0.7, 0, var_est_to_actual)) %>%
    ggplot(aes(service_mnth, var_est_to_actual)) +
    geom_boxplot()

enter image description here

Обратите внимание на сходство с отображаемым боксом.

...