【问题标题】:How do I use qqplot() and assign the output to an object?如何使用 qqplot() 并将输出分配给对象?
【发布时间】:2020-10-23 14:16:45
【问题描述】:

我想做一个有QQ图的对象

这是我的代码

    qqnorm(titanic$age) 
    qqline(titanic$age)

在 ggplot 中,我可以将几何图形层层叠叠,这样它们就可以在一个对象中

这种情况下的等价物是什么?

【问题讨论】:

  • qqnormqqplot 使用基本图形(查看source 并看到它调用plot),所以任何“层”(添加组件到)基本图形都可以工作这里。 (例如,您可以将abline(h=mean(titanic$age),col="red") 添加到此。)您说您希望“在一个对象中”,但此代码当前 在一个对象中。你想做什么?
  • 你的标题 "assign the output to an object" 暗示recordPlot,是这个意思吗?
  • 无法真正分配基本图。当您调用绘图命令时,它们只是一次绘制一层。
  • 但是,您可以使用 ggplot 绘制 qq 图。 See this question,或者显然 qqplotr package 就是为此而构建的。

标签: r


【解决方案1】:

这里有一些代码作为示例。我不得不使用不同的数据集,因为“泰坦尼克号”数据集的年龄列是非数字的:

data("AirPassengers")

qqnorm(AirPassengers) 
qqline(AirPassengers)
lines(x = 1:length(AirPassengers), rep(300, 144))

p <- recordPlot()
p

编辑:禁用绘图:

dev.control('inhibit')
plot(rnorm(10))
p <- recordPlot()
dev.off()

在循环中:

for(i in 1:10){
  # dev.control('inhibit')
  plot(rnorm(10))
  p <- recordPlot()
  # dev.off()
  l_plots[[i]] <- p
}

不知何故,将这些方法结合起来似乎很困难。创建完绘图窗口中的绘图如何删除?

【讨论】:

  • 在qqnorm上不显示图表可以吗?我想在一个函数中有这个而不显示它
  • 是的,您可以禁用设备,然后绘图不会显示在窗口中。我会编辑答案。
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 2011-07-19
  • 2020-05-07
  • 1970-01-01
相关资源
最近更新 更多