带有抖动的标签箱图

时间:2017-05-28 18:37:15

标签: r ggplot2 boxplot labels

您好我正在尝试使用以下代码创建一个boxplot。然而,它没有采取标签。非常感谢任何想法和帮助;

/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java 
\d[.]\d
-->
\d[.]\d-->

Process finished with exit code 0

1 个答案:

答案 0 :(得分:0)

如果我正确理解OP的意图

  • 绘制一些y值与weekday(以数字或整数给出) 在他的数据中)在x轴和
  • 用日期的名称而不是数字标记x轴。

为实现这一目标,我建议将工作日转换为适当标注因子水平的因素:

fcast_data1$weekday <- factor(fcast_data1$weekday, 
                              levels = 1:7,
                              labels = c(
                                "Sunday",
                                "Monday",
                                "Tuesday",
                                "Wednesday",
                                "Thursday",
                                "Friday",
                                "Saturday"))

请注意,这里有两个假设:

  1. 在OP的数据中,weekday 1表示星期日和
  2. 本周从星期日开始。
  3. 在其他情况下,需要调整级别和/或标签,例如levels = 0:6如果星期日由0编码。

    现在,绘制修改后的数据

    library(ggplot2)  
    ggplot(fcast_data1, aes(x = weekday, y = mape_MultExpSmoothFcst)) +
      geom_boxplot(outlier.shape = NA) + #avoid plotting outliers twice
      geom_jitter(position = position_jitter(width = .1, height = 0)) + 
      # mytheme + 
      ggtitle("May Forecast in May")
    

    enter image description here

    ggplot2已经认识到x轴是一个因子并且使用离散比例而不是连续比例。因子标签用于注释休息。此外,还为每个因子级别创建了一个单独的箱图。

    请注意,y审美现在指的是样本数据中给出的mape_MultExpSmoothFcst

    数据

    OP在评论中提供了样本数据。这些已在这里使用。

    fcast_data1 <- structure(list(date = c("5/1/2017", "5/1/2017", "5/1/2017", "5/1/2017", 
    "5/1/2017", "5/1/2017"), mape_MultExpSmoothFcst = c(39.89361702, 
    59.00277008, 42.31678487, 32.20720721, 36.9047619, 26.4033264
    ), pe_MultExpSmoothFcst = c(39.89361702, 59.00277008, 42.31678487, 
    32.20720721, 36.9047619, 26.4033264), weekday = c(2L, 2L, 1L, 
    1L, 3L, 3L)), .Names = c("date", "mape_MultExpSmoothFcst", "pe_MultExpSmoothFcst", 
    "weekday"), row.names = c(NA, -6L), class = "data.frame")