【问题标题】:Changing axis limits of effects plot in R更改 R 中效果图的轴限制
【发布时间】:2018-03-15 13:46:26
【问题描述】:

我正在使用效果包来绘制线性回归的交互效果,如下所示:

library(effects)
Model <- lm(drat~hp*cyl, data=mtcars)
plot(effect(term="hp*cyl",mod=Model,default.levels=10),multiline=TRUE)

如何更改限制以使它们从 0 到 10?我试过 ylim=(0,10) 和其他没有效果的变体。或者,是否可以使用 ggplot2 以相同的方式绘制回归?

【问题讨论】:

    标签: r ggplot2 lm


    【解决方案1】:

    这里是ggplot2 版本:

    library(effects)
    library(ggplot2)
    Model <- lm(drat~hp*cyl, data=mtcars)
    ef <- effect(term = "hp:cyl", Model, default.levels = 9) # 9 because the breaks are nicer
    ef2 <- as.data.frame(ef)
    
    ggplot(ef2, aes(hp, fit, col = factor(cyl))) +
      geom_line() +
      labs(y = 'drat') +
      ylim(0, 10)
    

    【讨论】:

      【解决方案2】:

      使用plot 函数,像这样设置ylim

      plot(effect(term="hp*cyl",mod=Model,default.levels=10),multiline=TRUE,ylim=c(0,10))
      

      【讨论】:

      • 谢谢!正是我想要的。
      • 不客气!在 ggplot 中无法直接转换使用 plot 函数获得的图形。您需要根据效果函数的输出构建 ggplot 图。 .
      【解决方案3】:

      ggplot2 不知道如何处理“eff”类的数据,因此您需要在绘图前将效果数据转换为数据框。然后,您可以使用group=aes() 中的数据来获取每个组的行。

      library(effects)
      library(ggplot2)
      Model <- lm(drat~hp*cyl, data=mtcars)
      e<-effect(term="hp*cyl",mod=Model,default.levels=10)
      ee<-data.frame(e)
      ee$cyl<-factor(ee$cyl)
      ggplot(ee, aes(x = hp, y = fit, group = cyl, colour = cyl)) +
             geom_line() +
             scale_y_continuous(limits = c(0,10))
      

      【讨论】:

      • 在将审美色彩映射到一个因素时,分组是自动的 :) 另外,您的代码应该给出 10 行,但您的情节只有 5 行?
      • 为什么我的代码应该给出 10 行? ee$cyl 内只有 5 个组可以绘制,看起来像 OP 的原始情节。
      • 因为default.levels=10,所以是在十级计算cyl?运行您的确切代码(和 OP)给我 10 行代码。
      • 这太奇怪了,当我在下面运行你的代码时,我仍然只得到 5 个组..
      • 不知道发生了什么,但我的输出对我来说更有意义。
      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多