首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xyplot中的多个abline

xyplot中的多个abline
EN

Stack Overflow用户
提问于 2013-05-03 22:50:18
回答 2查看 3K关注 0票数 4

我有一个“长”数据帧定义为:

代码语言:javascript
复制
q <- data.frame(Indicator.Code=factor(),Year=numeric(),Value=numeric())

并且我尝试在单个xyplot中为每个不同的Indicator.Code绘制作为年份的函数的值,如下所示

代码语言:javascript
复制
xyplot( Value~Year,data=q,group=Indicator.Code)

到现在为止还好。现在,我尝试添加与线性回归相对应的行

代码语言:javascript
复制
rlm(q$Value[q$Indicator.Code==a]~q$Year[q$Indicator.Code==a])

用于Indicator.Code的所有值。

我不知道该怎么做。添加回归线的常用方法,即

代码语言:javascript
复制
xyplot( Value~Year,data=q,group=Indicator.Code),
panel = function(x, y) {
  panel.xyplot(x, y)
  panel.abline(rlm(y ~ x))
}))

不能正常工作(它计算单个回归,并为整个数据集添加单个回归线)。此外,我已经计算了回归(除了图形之外,我还需要它们),并且讨厌不得不重新计算它们的想法。

有没有什么提示新手可以跟上?

EN

回答 2

Stack Overflow用户

发布于 2013-05-03 23:05:02

我对ggplot2上瘾了:)。ggplot2中的等价物实现了您所期望的功能:

代码语言:javascript
复制
library(ggplot2)
ggplot(q, aes(x = Year, y = Value, color = Indicator.Code)) + 
   geom_point() + stat_smooth(method = "rlm")

请注意,我相信您会将任何函数作为method传递,但如果没有可重复的示例,就很难进行检查。

票数 2
EN

Stack Overflow用户

发布于 2013-05-03 23:15:52

对于为每个晶格绘制单独符号的自定义面板函数,group要求您将实际的面板函数包装在对panel.superpose()的调用中。下面是一个使用mtcars data.frame中的数据的示例。

代码语言:javascript
复制
library(lattice)
library(MASS)

myPanel <- function(x,y,...) {
    panel.xyplot(x,y,...)
    panel.abline(rlm(y~x), ...)
}

xyplot(mpg~disp, group = cyl, data = mtcars,
       panel = function(...) panel.superpose(panel.groups = myPanel, ...))

## Or, equivalently:
xyplot(mpg~disp, group = cyl, data = mtcars, 
       panel = panel.superpose, panel.groups = myPanel)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16361766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档