【问题标题】:Adding point to a facet将点添加到构面
【发布时间】:2019-07-30 00:57:49
【问题描述】:

首先是库

library(tidyr)
library(leaps)
library(ggplots2)
library(ggdark)

模型的价值

set.seed(1)
X = rnorm(100)
e = rnorm(100)
Y = 8 + 7*X + 2.5*X^2 - 9*X^3 + e

拟合

data.all = data.frame(Y,X)
regfit.full = regsubsets(Y~poly(X,10,raw=T), data=data.all, nvmax=10)
(reg.summary = summary(regfit.full))

然后我得到每个变量的最小值

(reg.min.cp = which.min(reg.summary$cp))
(reg.min.bic = which.min(reg.summary$bic))
(reg.min.adjr2 = which.min(reg.summary$adjr2))

为绘图创建数据框

df = data.frame(reg.summary$cp, reg.summary$bic, reg.summary$adjr2)
df$rownum = 1:nrow(df)

重塑数据框

molten = df %>% gather(variable, value, reg.summary.cp:reg.summary.adjr2 )

使用刻面绘图

(lp = molten %>% ggplot(data=.) + 
  aes(x=rownum, y=value) + 
  geom_line(col="black") + 
  geom_point(data=molten, aes(xint=reg.min.adjr2, z="reg.summary.adjr2", col="red")) + # this is where I got the wrong plot
  facet_wrap(~variable, scales="free_y")
)

而且显示错误。我所期望的是geom_point(data=molten, aes(xint=reg.min.adjr2, z="reg.summary.adjr2", col="red")) 只会将reg.min.adjr2 添加到构面reg.summary.adjr2 并且只有一点。 怎么弄成这样?

【问题讨论】:

    标签: r ggplot2 facet


    【解决方案1】:

    我从这两个 SO 中得到了一些想法:

    How to add different lines for facets

    Add a segment only to one facet using ggplot2

    我所做的是首先为cpbicadjr2 的最小值创建一个新数据框。然后将点添加到主图。

    我确保x 的值是rownum,y 是最小值。我还在min_plot 中添加了一个参数variable,以确保将其添加到正确的方面。

    min_plot = data.frame(
      rownum=c(reg.min.cp, reg.min.bic, reg.min.adjr2),
      y = c(reg.summary$cp[reg.min.cp], reg.summary$bic[reg.min.bic], reg.summary$adjr2[reg.min.adjr2]),
      variable=c("reg.summary.cp", "reg.summary.bic", "reg.summary.adjr2"))
    
    (lp = molten %>% ggplot(data=.) 
      + aes(x=rownum, y=value)  
      + geom_line(col="black")  
      + facet_wrap(~variable, scales="free_y")  
      + geom_point(data = min_plot, aes(x=rownum, y=y), col="red")
    )
    

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2018-07-24
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      相关资源
      最近更新 更多