[R] plotting order of lines in xyplot panels while using conditioning variable and groups
Deepayan Sarkar
deepayan.sarkar at gmail.com
Tue Jun 19 20:46:16 CEST 2007
On 6/19/07, RICHARD PITMAN <richard.pitman3 at btopenworld.com> wrote:
> I am using the following code:
>
> library(lattice)
> data<-read.csv("data.csv")
> attach(data)
>
> fig<-xyplot(S_t~month|event,
> key = list(text=list(lab=c("Time to first CV
> event - Data",
> "Survival post
> first CV event - Model",
> "Survival post
> first MIA/CA event - Data",
> "Survival post
> first CVA event - Data",
> "Survival post
> first TIA event - Data",
> "Survival post
> first CVA/TIA event - Model"),
> font=2,
> cex=0.55),
> lines=list(col=c("red",
> "magenta",
> "blue",
> "brown"),
> type="l",
> cex=0.55,
> lwd=1.5,
> pch=0:1),
> corner=c(0,0),x=0.75,y=0.75),
> group = group,
> index.cond = list(c(4,5,6,7,1,2,3)),
> type = "l",
> lwd = "3",
> ylim = c(0,1.5),
> layout = c(4,2),
> col = c("red","magenta","blue","brown"),
> pch = 0:3,
> cex = 0.5,
> ylab = "cumulative probability",
> xlab = "months",
> )
> print(fig)
>
> However, in each panel, the order in which the lines
> are printed is suboptimal as some shorter lines are
> obscured under longer lines. I am having some trouble
> finding a method to change the order in which curves
> are plotted in each panel. I have tried reordering the
> levels in data$group:
>
> data$group<-factor(data$group,
> levels=c("CV_model_event_1","CV model event 2","CV
> event
> 1","CV_event_2","CV_event_2_CVA","CV_event_2_TIA"))
>
> but this changed nothing.
>
> Any suggestions gratefully received.
It's hard to see the problem without a reproducible example, but if
all you want is to order the levels of groups in decreasing order of
frequency, you could use
groups = reorder(group, group, function(x) { -length(x) }),
-Deepayan
More information about the R-help
mailing list