在xyplot(R)

时间:2016-02-09 02:45:54

标签: r plot linear-regression

我之前询问过这个问题(请参阅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"

感谢。

1 个答案:

答案 0 :(得分: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')
)

enter image description here

使用您的数据,您的功能出现了问题:

  • 您的数据中没有列site
  • 您有一个{来定义函数参数列表而不是(
  • panel.xyplot功能中的panel.ablinepanel来电之间没有分号或换行符。
  • 您可能希望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")})

enter image description here