我之前询问过这个问题(请参阅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"
感谢。
答案 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')
)
使用您的数据,您的功能出现了问题:
site
{
来定义函数参数列表而不是(
panel.xyplot
功能中的panel.abline
和panel
来电之间没有分号或换行符。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")})