【问题标题】:Regression line through grouped data sets in xyplot (R)通过 xyplot (R) 中分组数据集的回归线
【发布时间】:2016-05-18 21:47:14
【问题描述】:

我之前询问过这个问题(请参阅How to symbolize groups separately in a graph (R)),但无法让建议的代码工作。我想知道我是否可以在xyplot 中做我需要的事情。我使用了这段代码:

xyplot(y~x,groups=site,type=c("p","r"))

试图得到一条回归线,但它给了我一条分别穿过每个组的线。我想以不同的方式对组进行符号化,但它们组成了一个我想将行添加到的数据集。

我查看了Plotting xyplot with regression line on lattice graphics,但无法使面板功能正常工作(这很可能是我缺乏 R 经验)。

与面板函数相关的附带问题:如何在我的代码中插入换行符,它们是否必要(包括将花括号放在与函数不同的行上)?不同的面板功能是否需要以某种特定方式分开?

编辑:abline 会起作用吗?当我在xyplot 中绘制我的点后应用它时,它不会给出任何错误,但也不会绘制一条线。

数据集:

s x y COB 0 2 COB 0 6 COB 0 4 COB 0 3 COB 0 3 COB 2 7 COB 2 8 COB 2 4 COB 2 13 COB 2 9 JP 9 9 JP 9 9 JP 9 14 JP 14 20 JP 14 18 JP 14 19

代码:

xyplot(y~x|site,data=D,panel=function{x,y,...){panel.xyplot(x,y,...)panel.abline(lm(y~x),col="red")})

我收到的错误: Error: unexpected '{' in "xyplot(y~x|site,data=D,panel=function{"

新代码:

xyplot(y~x,groups=site,auto.key=list(columns=nlevels(Data$s)),panel=function(x,y,...){panel.xyplot(x,y,...);panel.abline(lm(y~x),col="red")},xlab="Years burned",ylab="Species per plot",main="Years burned vs. number of species",par.settings=list(superpose.symbol=list(pch=15,cex=2,col=c("blue,"green")))

错误:

Error: unexpected symbol in "s=nlevels(Data$s)),panel=function(x,y,...){panel.xyplot(x,y,...);panel.abline(lm(y~x),col="red")},xlab="Years burned",ylab="Species per plot",main="Years burned vs. number of species",par.sett"

谢谢。

【问题讨论】:

标签: r plot linear-regression


【解决方案1】:

abline 用于基本图形。 panel.abline 是你想要的格函数。您可以在面板功能中使用它来绘制线条。

这是来自iris 的示例:

xyplot(
  Petal.Width ~ Petal.Length,
  data = iris,
  groups = Species,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    panel.abline(lm(y~x))
  },
  grid = TRUE,
  auto.key = list(title='Species', space='right')
)

使用您的数据,您的功能有什么问题:

  • 您的数据中没有site
  • 你有一个{ 定义函数参数列表而不是(
  • panel 函数中的 panel.xyplotpanel.abline 调用之间没有分号或换行符。
  • 您可能想要groups=s 而不是以s 为条件。

这是工作代码:

xyplot(y~x,data=D,groups=s,panel=function(x,y,...){panel.xyplot(x,y,...); panel.abline(lm(y~x),col="red")})

【讨论】:

  • 我一直在研究并发现了 panel.abline。但是,它使它完全关闭。这就像 panel.abline 的坐标系和我的情节不一样。我该如何解决这个问题?
  • @AlexPetzke 提供一个可重现的示例,表明它不适合您。对于 Matthew 的示例来说,它似乎工作得很好,所以你的数据有什么不同。
  • s/site 的事情和条件对组是我的错误。这些站点的名称很长,我简化并更改了名称。关于 {/(:显然我已经盯着代码看了很长时间,以至于我不再真正看到它了。R 似乎不允许我添加换行符,但很高兴了解分号。
  • 感谢您的帮助和容忍我的错误和无知,非常感谢!
  • 这看起来与最初提出的问题无关,并且得到了回答。我建议针对这个额外的问题提出一个新问题。
猜你喜欢
  • 2016-01-29
  • 2021-04-28
  • 2012-12-20
  • 1970-01-01
  • 2010-11-13
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多