On Wed, Jul 1, 2009 at 10:38 PM, jlfmssm<jlfmssm at gmail.com>
wrote:> I have a data set like this
>
>
ID=c("A","A","A","A","A","A","A","B","B","B","B","B","B","B")
> s=c(1.1,2.2,1.3,1.1,3.1,4.1,4.2,1.1,2.2,1.3,1.1,3.1,4.1,4.2)
> d=c(1,2,3,4,5,6,7,1,2,3,4,5,6,7)
> t=c(-3,-1,0,1,2,3,4,-3,-2,-1,0,1,2,3)
>
>
mydata<-data.frame(cbind(as.character(ID),as.numeric(s),as.integer(d),as.numeric(t)))
>
colnames(mydata)=c("ID","S","d","t")
> attach(mydata)
>
> library(lattice)
>
> Key <- list(text = list(c("FDL", "FDP")), points =
list(pch = c("*","o"),col
> = c("red", "blue"), cex = 2), space =
"right")
>
> xyplot(S ~ d | ID,groups = t < 0,col = c("red",
"blue"),pch = c("*",
> "o"),scales = list(x = list(at=c(min(d),d[which
>
> (t==0)],max(d)),alternating =c(1,2))),key = Key,cex = 2,type =
"b")
>
> Actually, I want to have :
>
> location of tick marks along the axis is:
>
> For ?A
> 1,3,7
>
> because for A
> min(d)=1
> d[which(t==0)]=3
> max(d)=7
>
> For B
> 1,4,7
> min(d)=1
> d[which(t==0)]=4
> max(d)=7
>
> But the location of tick marks along the axis from my code doesn't
depend on
> A or B.
> Does anyone know how to change this?
Lattice doesn't support data-dependent axis annotation (it's possible
using panel.axis if you really want, but there are several other
things you will need to tweak).
If you want to mark certain points, use something like
xyplot(S ~ d | ID, groups = t < 0,
par.settings = simpleTheme(col = c("red", "blue"),
pch = c("*", "o"),
cex = 2),
auto.key = list(text = c("FDL", "FDP")), type =
"b",
panel = function(x, y, ..., subscripts) {
tt <- t[subscripts]
at <- c(min(x), x[tt ==0], max(x))
panel.abline(v = at, col = "darkgrey")
panel.xyplot(x, y, ..., subscripts = subscripts)
})
-Deepayan