使用ggplotly将boxplots分组时不遵守分组

时间:2019-10-02 10:56:55

标签: r ggplot2 plotly boxplot ggplotly

我正在尝试以下代码,以获取具有ggplot2的箱形图的图,这些图根据不同的类别进行分组:

category_1 <- rep(LETTERS[1:4], each = 20)
value <- rnorm(length(category_1), mean = 200, sd = 20)
category_2 <- rep(as.factor(c("Good", "Medium", "Bad")), length.out = length(category_1))
category_3 <- rep(as.factor(c("Bright", "Dark")), length.out = length(category_1))
df <- data.frame( category_1, value, category_2, category_3)

p <- ggplot(df, aes(x = category_1, y = value, color = category_2, shape = category_3)) +
  geom_boxplot(alpha = 0.5) +
  geom_point(position=position_jitterdodge(), alpha=0.7)

p

我在stackoverflow中仍然太笨拙,无法发布图像,但是this is the result I want.

但是,当我尝试使用

将其转换为可打印时
pp <- ggplotly(p)
pp

“分组”的最后2个分组层(形状和颜色)被“忽略”,并且所有箱形图都绘制在彼此的顶部,您只能{{3}来遵守aes(x = category_1, ...)中指定的x轴分组}。

如何避免此问题?感谢您的宝贵时间。

编辑

我尝试直接使用plotly语法,并使用以下代码获得类似的结果:

pp <- plot_ly(df, x = ~category_1, y = ~value, color = ~category_2, 
              mode = "markers", symbol = ~category_3, type = "box", boxpoints = "all") %>%
   layout(boxmode = "group")
pp

see here之所以说类似,是因为密谋迫使这些点位于箱形图的旁边,而不是在箱形图的顶部,这并不是我想要的。

我想这个问题“已经解决”。虽然,我仍然很好奇上面的问题是否有解释。再次感谢!

1 个答案:

答案 0 :(得分:1)

我认为这可以解决您的问题。

p <- ggplot(df, aes(x = category_1, y = value, color = category_2, shape = category_3)) +
  geom_boxplot(alpha = 0.5) +
  geom_point(position=position_jitterdodge(), alpha=0.7)

p %>%
  ggplotly() %>%
  layout(boxmode = "group")

干杯。