R语言 使用geom_boxplot在每个面的底部对每个箱线图进行绘图计数

pnwntuvh  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(144)

我想在一个面封装的geom_boxplot中绘制每个箱线图的数据计数。下面的例子给出了每个箱形图下面的计数,但我想对齐计数,理想情况下,当尺度设置为自由时,刚好在每个方面的最小值之上。虽然最后一项给出了计数,但我不明白它如何决定每种情况下绘图的y值。

require(tidyverse)

ggplot(mtcars, aes(x = cyl, y = mpg, group = cyl)) +
  geom_boxplot(aes(fill = cyl), outlier.size = 1, outlier.shape = 16,
               show.legend = FALSE, lwd = 0.2) +                                   # Make box plots
  facet_wrap(gear ~ ., nrow = 1, scales = "free") +
  stat_summary(fun.data = give.n, geom = "text", fun.min = -Inf, 
               size = 5, colour = "red", hjust = 0)

h9a6wy2h

h9a6wy2h1#

你可以使用geom_text()
在渲染箱线图之前,您可以手动计算**“每个面的最小值”**。

library(ggplot2)
library(dplyr)

give.n = mtcars |>
  mutate(y_label_min = min(mpg), .by=gear) |> # Dplyr 1.1.0
  summarise(
    y_label_min = min(y_label_min),
    n = n(),
    .by = c(gear ,cyl)
  )

ggplot(mtcars, aes(x = cyl, y = mpg, group = cyl)) +
  geom_boxplot(aes(fill = cyl), outlier.size = 1, outlier.shape = 16,
               show.legend = FALSE, lwd = 0.2) +                                   # Make box plots
  facet_wrap(gear ~ ., nrow = 1, scales = "free")+ 
  geom_text(
    data=give.n,
    aes(label=n,x=cyl, y=y_label_min)
)

创建于2023-05-07带有reprex v2.0.2

相关问题