首页 > 解决方案 > 如何创建合适的 geom_boxplot?

问题描述

我正在尝试创建一个常规的箱线图,但是却得到了一个奇怪的虚线图。

您能否向我指出我做错了什么以及如何纠正它?

非常感谢你。

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()

我奇怪的箱线图看起来像一个点:

图像

正确的箱线图看起来像一个实际的盒子,带有颜色填充

图像

标签: rggplot2boxplot

解决方案


我的猜测是你在per中有很多0s 。var_est_to_actualservice_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()

在此处输入图像描述

service_mnth我们现在用s替换 70% 的观察值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()

在此处输入图像描述

请注意与您显示的箱线图的相似性。


推荐阅读