2016-02-09 78 views
-2

通過分組數據集的迴歸線我之前問過這個問題(請參閱How to symbolize groups separately in a graph (R)),但無法獲得建議的代碼工作。我想知道我是否可以在xyplot中做我需要的。我用這個代碼:xyplot(R)

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

看到這個問題:http://stackoverflow.com/questions/14185600/superposed-xyplot-panels-with-grouped-regression-行 –

+0

數據中沒有「網站」。另外,你不需要調節,你需要'groups ='。正如我的答案。 –

回答

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在數據
  • 你有一個{定義函數參數lis t而不是(
  • 在您的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")}) 

enter image description here

+0

我一直在研究並發現panel.abline。然而,它完全關閉的線。這就像panel.abline的座標系,我的情節不一樣。我該如何解決? –

+0

@AlexPetzke提供一個可重現的示例,顯示它不適合您。對Matthew的例子來說,它似乎工作得很好,所以你的數據如何標識不同。 – MrFlick

+0

更新了數據和代碼。 –