箱线图未正确显示

Boxplot Not Showing Correctly

正在尝试运行这个命令:

data %>%
+     ggplot( aes(x=Seconds, y=Rate)) +
+     geom_boxplot( fill="skyblue", notch=FALSE) +
+     geom_jitter( size=1, color="orange", width=0.2)

关于这个data.frame(每列已经转换为一个因子)(简化):

Seconds  |  Rate
0.512849 |  0
0.227982 |  0
1.287198 |  1
1.278101 |  1
2.218711 |  2
3.124897 |  2
5.128947 |  3
6.189710 |  3

输出是这样的,它正确显示了散点图部分,但没有正确显示箱线图部分:

geom_boxplot 需要在 aes()

中使用 group= 命令

它将默认为您的 x 值,除非您指定另一个变量。

所以要添加它...

data %>%
  ggplot( aes(x=Seconds, y=Rate, group=Seconds)) +
  geom_boxplot( fill="skyblue", notch=FALSE) +
  geom_jitter( size=1, color="orange", width=0.2)

您还会注意到我删除了每行开头的 +。您只需要在结尾或开头使用它 - 两者都不需要。

不确定你为什么要使用管道 (%>%) 但你可以像这样绘制它...

ggplot(data, aes(x=Seconds, y=Rate, group=Seconds)) +
  geom_boxplot( fill="skyblue", notch=FALSE) +
  geom_jitter( size=1, color="orange", width=0.2)

所以这里你有一个箱形图,用于你的秒数列中的每个值,看起来每一行都不同。

您的箱线图组应该是 x 轴上的变量,通常它们应该是分类的,或者至少是一个整数。

从数字上讲,如果您将“比率”列中的值作为框的分组值会更有意义 - 虽然我知道比率在这里可能是一个因变量。

我认为您需要为问题提供更多背景信息,但希望这会有所帮助。

其他答案都部分正确,但完整答案如下。特别是数据需要按速率分组(JMilner 建议按秒分组,所以是在正确的轨道上!),并且需要将速率作为一个因素,而不是秒(如 Brian 和 Camille 所建议的那样)

ggplot(data, aes(x=Rate, y=Seconds, group=Rate)) +
+     geom_boxplot( fill="skyblue", notch=FALSE) +
+     geom_jitter( size=1, color="orange", width=0.3)

最终输出如下所示(将秒更改为分钟,标签现在正确了:)