如何标记给定 ggplot 对象中数据点的 y 值?

问题描述

我正在尝试在给定 ggplot 对象中注释数据点的 y 值,事后。

为了提供可重现的示例,我将使用 mtcarslm() 数据上创建模型,并使用 sjplot::plot_model() 绘图。

library(magrittr)
library(sjplot)

given_p_object <- 
  mtcars %>% 
  lm(mpg ~ as.factor(gear),data = .) %>% 
  sjplot::plot_model(.,type = "pred")

所以我的问题从这里开始:假设我得到了对象 given_p_object。我执行它并得到情节:

> given_p_object

given_plot

是否可以在图上标记每个点的 y 值,无需参考原始数据和导致图的过程(从而忽略 mtcars %>% lm() %>% sjplot::plot_model()) ?换句话说,我如何从当前 given_p_object提取执行以下操作所需的信息?

demo

解决方法

这些值可以在:

given_p_object$gear$data$predicted
#[1] 16.1 24.5 21.4

一般的解决方案是:

get_predicted_value <- function(p) p[[1]]$data$predicted
get_predicted_value(given_p_object)
#[1] 16.1 24.5 21.4