绘制格子xyplot中每组面板数据的第一个点

时间:2014-10-10 22:24:53

标签: r panel lattice

我尝试使用在每个组的第一个值上叠加符号的组和面板创建线图。此尝试仅绘制第一组的第一个点,而不对其他两个组执行任何操作。

library(lattice)
foo <- data.frame(x=-100:100, y=sin(c(-100:100)*pi/4))
xyplot( y~x | y>0,  foo, groups=cut(x,3),
        panel = function(x, y, subscripts, ...) {
          panel.xyplot(x, y, subscripts=subscripts, type='l', ...)
          # almost but not quite:
          panel.superpose(x[1], y[1], subscripts=subscripts, cex=c(1,0), ...) 
        } )

可以理解一般解决方案,以允许绘制每个组和面板内的特定点(例如,第一,中间和端点)。

enter image description here

1 个答案:

答案 0 :(得分:5)

(感谢您提出这个好的lattice问题。)您应该使用下标,因为它是为面板选择单个数据点的机制:在此您要按面板选择groups:{{1 }}。获得正确的分组变量后,您可以使用它来分割数据并选择每个组的第一个元素:

groups[subscripts]

您使用 ## first points xx = tapply(x,groups[subscripts],'[',1) yy = tapply(y,groups[subscripts],'[',1) ## end points xx = tapply(x,groups[subscripts],tail,1) yy = tapply(y,groups[subscripts],tail,1) (比基本panel.points更高级别)绘制点。

panel.superpose

enter image description here

如果您想根据颜色组对点进行着色,则应将组参数添加到library(lattice) foo <- data.frame(x=-100:100, y=sin(c(-100:100)*pi/4)) xyplot( y~x | y>0, foo, groups=cut(x,3), panel = function(x, y, subscripts, groups,...) { panel.xyplot(x, y, subscripts=subscripts, type='l',groups=groups, ...) # Note the use `panel.points` and the grouping using groups[subscripts] panel.points(tapply(x,groups[subscripts],'[',1), tapply(y,groups[subscripts],'[',1), cex=2,pch=20, ...) } ) 。 (我把这作为练习留给你)