RICHARD PITMAN
2007-Jun-19 10:19 UTC
[R] plotting order of lines in xyplot panels while using conditioning variable and groups
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.
TIA
Richard
Deepayan Sarkar
2007-Jun-19 18:46 UTC
[R] plotting order of lines in xyplot panels while using conditioning variable and groups
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