Thanks a lot!

Huapeng

-----Original Message-----
From: foolish.andr...@gmail.com [mailto:foolish.andr...@gmail.com] On Behalf Of 
Felix Andrews
Sent: Friday, June 11, 2010 8:23 PM
To: Chen, Huapeng FOR:EX
Cc: r-help@r-project.org
Subject: Re: [R] Overlay of barchart and xyplot

Hi,

I have an example below of adding a key to the merged plot.

You can not have the key on the right hand side because that viewport
is used by the second ylab (ylab2 from doubleYScale). Well, if you
really wanted to, you could do it with the grid package, using
frameGrob or somesuch.


NTLST_Dispersal_VAR_00_08$Year <-
factor(NTLST_Dispersal_VAR_00_08$Year, levels =
c("1999","2000","2001","2002","2003","2004","2005","2006","2007"),
ordered = TRUE)

dispersal<-
barchart(LDP_PER*100 + SPP_PER*100 + SPG_PER*100 ~
                    Year | District,
                    data=NTLST_Dispersal_VAR_00_08,
                    stack=TRUE,
                    layout=c(5,5),
                    scales = list(x = list(rot = 90)),
                    xlab="Year", ylab="%",
                    strip = strip.custom( bg="light gray"),
                    par.settings = simpleTheme(col = c("dark gray",
"light gray", "white")),
                    auto.key = list(points = FALSE, rectangles = TRUE)
                    )


vars <-
xyplot(sqrt(Infestation_NUM) + AI  ~  Year | District,
            data=NTLST_Dispersal_VAR_00_08,
            layout=c(5,5),
            type="b",
            ylab="Square roots of number of infested cells/Landscape
aggregation index",
            auto.key = list(lines = TRUE)
            )

dblplot <-
doubleYScale(dispersal, vars, use.style=FALSE, add.ylab2 = TRUE
            )

dblplot <-
update(dblplot,
    par.settings = simpleTheme(fill = c("white", "dark gray",
"black"), border="black",col.line="black",
                           col.points="black",pch=c(16,17),lty=c(1,1,1,2,1))
)

## include second key at the bottom
update(dblplot, legend = list(bottom = vars$legend$top))

## Otherwise you could just include a "key" argument in the first plot
which includes all the items explicitly.

## Or merge the two 'auto.key's at the top:

mergeLegends <- function(a, b, ...) {
    g <- frameGrob()
    agrob <- a
    if (!inherits(a, "grob")) {
        a <- eval(as.call(c(as.symbol(a$fun), a$args)), getNamespace("lattice"))
    }
    if (!inherits(b, "grob")) {
        b <- eval(as.call(c(as.symbol(b$fun), b$args)), getNamespace("lattice"))
    }
    g <- packGrob(g, a, side = "left")
    packGrob(g, b, side = "right")
}

update(dblplot, legend = list(top = list(fun = "mergeLegends",
    args = list(a = dispersal$legend$top, b = vars$legend$top))))





On 5 June 2010 04:49, Chen, Huapeng FOR:EX <huapeng.c...@gov.bc.ca> wrote:
> Hi Felix,
>
> Thanks for your help and advice. The following code is close to what I want 
> but still have problems of failure to custom lines and add a key in any way. 
> Par.settings with the final plot seems not working somehow except pch and lty 
> but they overwrite par.setting with barchart. I also attached data I used by 
> using "dput". I appreciate your further helps.
>
> Thanks,
>
> Huapeng
>
>
> ######### code #############################################################
> NTLST_Dispersal_VAR_00_08$Year <- factor(NTLST_Dispersal_VAR_00_08$Year, 
> levels = c("1999","2000","2001","2002","2003","2004","2005","2006","2007"), 
> ordered = TRUE)
>
> dispersal<-barchart(NTLST_Dispersal_VAR_00_08$LDP_PER*100 +
>                     NTLST_Dispersal_VAR_00_08$SPP_PER*100 +
>                     NTLST_Dispersal_VAR_00_08$SPG_PER*100 ~
>                     NTLST_Dispersal_VAR_00_08$Year | 
> NTLST_Dispersal_VAR_00_08$District,
>                     data=NTLST_Dispersal_VAR_00_08,
>                     horizontal=FALSE,
>                     stack=TRUE,
>                     layout=c(5,5),
>                     xlab="Year",
>                     ylab="%",
>                     strip = strip.custom( bg="light gray"),
>                     par.settings = simpleTheme(col = c("dark gray", "light 
> gray", "white")),
>                     #key=list(space="right",size=10,
>                     # rectangles=list(size=1.7, border="black", col = 
> c("white", "dark gray", "black")),
>                      
> #lines=list(pch=c(16,17),lty=c(1,2),col="black",type="b"),
>                     # text=list(text=c("SPG","SPP","LDP")))
>
>                     #auto.key=TRUE
>                     )
>
>
>
> xyplot(sqrt(NTLST_Dispersal_VAR_00_08$Infestation_NUM) +
>             NTLST_Dispersal_VAR_00_08$AI  ~  NTLST_Dispersal_VAR_00_08$Year | 
> NTLST_Dispersal_VAR_00_08$District,
>             data=NTLST_Dispersal_VAR_00_08,
>             layout=c(5,5),
>             type="b",
>             ylab="Square roots of number of infested cells/Landscape 
> aggregation index",
>             #par.settings = simpleTheme(col = c("black", "black"), 
> pch=c(16,17)),
>             #key=list(space="right",size=10,
>                      #rectangles=list(size=1.7, border="black", col = 
> c("white", "dark gray", "black")),
>             #         
> lines=list(pch=c(16,17),lty=c(1,2),col="black",type="b"),
>             #         text=list(text=c("t4","t5")))
>
>             )
>
>  doubleYScale(dispersal, vars, use.style=FALSE, add.ylab2 = TRUE
>             )
>
>  update(trellis.last.object(),
>  par.settings = simpleTheme(fill = c("white", "dark gray", "black"), 
> border="black",col.line="black",
>                            col.points="black",pch=c(16,17),lty=c(1,1,1,2,1)))
>
> ######################################################################################################
>





-- 
Felix Andrews / 安福立
Integrated Catchment Assessment and Management (iCAM) Centre
Fenner School of Environment and Society [Bldg 48a]
The Australian National University
Canberra ACT 0200 Australia
M: +61 410 400 963
T: + 61 2 6125 4670
E: felix.andr...@anu.edu.au
CRICOS Provider No. 00120C
-- 
http://www.neurofractal.org/felix/
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to