【发布时间】:2021-06-28 19:14:09
【问题描述】:
我有一个随机正态变量bob_commute_duration_minutes 的 ggplot 直方图,平均值为 30,标准差为 10(如果重要,它是 Shiny 应用程序的一部分)。我想将直方图的视觉限制为 +/- 3SD。我有这个:
outdf_r() %>% ggplot(aes(x = bob_commute_duration_minutes,
fill= dplyr::if_else(bob_commute_duration_minutes>=input$commutemean,"Above Average","Below Average"))) +
geom_histogram(bins=100) +
# ggtitle(paste( mean(outdf_r()$bob_commute_duration_minutes), sd(outdf_r()$bob_commute_duration_minutes),sep=","))+
ggtitle("Bob's Commute Time Histogram (2SD Marked, 3SD Clipped)") +
guides(fill=guide_legend(title="Commute Above or Below Average"))+
xlab("Bob's Commute Time")+
xlim((input$commutemean- 3*input$commutesd),(input$commutemean + 3*input$commutesd)) +
geom_vline(xintercept=(input$commutemean- 2*input$commutesd),color="black") +
geom_vline(xintercept=(input$commutemean+ 2*input$commutesd),color="black")
到目前为止一切顺利;不显示极端异常值。
我还想编辑 x 轴,以便有更多刻度线。我尝试使用 scale_x_continuous ,中断的限制为 +/- 3SD 并且刻度线以 1 为单位,但这导致异常值再次显示。关于如何在 x 轴上制作更详细的刻度线,同时仍然隐藏距离平均值超过 3SD 的值有什么建议吗?
【问题讨论】:
-
在
xlim之后运行scale_x_continuous会覆盖对xlim的调用。因此,删除xlim调用并使用scale_x_continuous中的limits参数来设置限制。此外,请记住,使用scale_x_continuous(或等效地使用xlim)设置限制会从均值、回归线或任何其他汇总度量的计算中排除超出限制的数据。要设置限制而不排除数据,请使用coord_cartesian。有关更多详细信息,请参阅here。 -
成功了,谢谢@eipi10