如何在geom_jitter图中添加显示数据点数量的文本标签?

ix0qys7i  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(346)

我有一个geom_jitter图,x轴为分类变量,y轴为连续变量。我想在每个x轴类别的最大值上绘制该类别中包含的数据点总数,这基本上是绘制

table(my_df$my_categorical_var)

到目前为止,我已经尝试过:

+geom_text(aes(x= my_categorical_var), y= max(my_continuous_var), label=as.vector(my_df$my_categorical_var))

但这会输出一个错误:

Error in `geom_text()`:
! Problem while computing aesthetics.
ℹ Error occurred in the 2nd layer.
Caused by error in `check_aesthetics()`:
! Aesthetics must be either length 1 or the same as the data
  (20996)
✖ Fix the following mappings: `label`

这基本上让你为每个标签创建一个geom_text,或者修改数据框,为每个类别添加一个新的列,包含我想绘制的数字,但是可能有更直接的东西。
我想要的输出将类似于下面的图表,顶部标签显示每个类别的数据点计数:

oxiaedzo

oxiaedzo1#

您可以将数据的汇总版本传递到geom_text层:

library(ggplot2)
library(dplyr)

ggplot(mpg, aes(cyl, hwy)) +
  geom_point(position = position_jitter(width = 1/3)) +
  geom_text(data = . %>% 
              group_by(cyl) %>% 
              summarize(hwy = max(hwy), label = n()),
            aes(label = label), nudge_y = 5, color = 'red')

相关问题