[R] Help xyplot

Duncan Mackay mackay at northnet.com.au
Sat Feb 23 13:45:39 CET 2013


Hi Peter

Try the 2 examples below - it may give you some ideas

useOuterStrips(strip      = 
strip.custom(factor.levels = paste("Year", c(2010:2012)),
                                          par.strip.text = list(cex = 0.75)),
                strip.left = 
strip.custom(factor.levels = paste("Lat.", 
rep(c(3,2) ,each = 2), "° S, Long.", rep(5:4, 2), "° W"),
                                          par.strip.text = list(cex = 0.75)),
xyplot(prec~month|year*paste(lat,lon), data=ndata,
        as.table = T,
        scales   = list(x = list(alternating = FALSE,
                                 relation    = "same",
                                 rot         = 60),
                        y = list(alternating = FALSE,
                                 relation    = "same",
                                 rot         = 0)
                    ),
        ylim=c(min, max),
        type     = c("b"),
        col      = 1
)  # xyplot **
) ## useOuterStrips

useOuterStrips(strip      = 
strip.custom(factor.levels = paste("Year", c(2010:2012)),
                                          par.strip.text = list(cex = 0.75)),
                strip.left = FALSE,
xyplot(prec~month|year*paste(lat,lon), data=ndata,
        as.table = T,

        scales   = list(x = list(alternating = FALSE,
                                 relation    = "same",
                                 rot         = 60),
                        y = list(alternating = FALSE,
                                 relation    = "same",
                                 rot         = 0)
                    ),
        ylim=c(min, max),
        col      = 1,
        panel    = function(x,y ,...){

                     pnl = panel.number()

                     if (pnl %in% c(1:6)) 
panel.xyplot(x,y, type = "b",...) else panel.xyplot(x,y, type = "l",...)

                     grid.text(label = 
paste("Lat.", rep(c(3,2) ,each = 6)[pnl], "° S, 
Long.", rep(rep(5:4, 3),2)[pnl], "° W"),
                               x = unit(.1, "npc"),
                               y = unit(.8, "npc"),
                               hjust = NULL, vjust = NULL, rot = 0,
                               just = "left", default.units = "npc",
                               gp = gpar(cex = 0.8) )


                   }
)  # xyplot **
)

If you want to have selected? points aggregate first
For sampling you would have to sample that first 
and then use abs()[5] to get the five nearest

Not sure what you mean exactly and without a 
sample of the 5000 cannot help further

HTH

Regards

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au


At 09:15 23/02/2013, you wrote:
>Hi Mackay and anybody
>(a) Is it possible to select randomly (let say five grids) and plot?
>(b) Is it possible to plot five nearest grid in one figure?
>The original question and improved codes:
>
>
>#I am ploting gridded time series data. I would like the actual lat
>#and lon value appear on the graph-if possible inside the graph as
>#numbers. If there is also more elegant ways to plot the graphs I
>#>will appreciate more suggestions.
>#################################
>library(ggplot2)
>library(lattice)
>month <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
>"Aug", "Sep", "Oct", "Nov", "Dec")
>month <- factor(month, levels = month.abb)
>data <- as.data.frame(expand.grid(lon=seq(4,5, 1), lat=seq(-3,-2,1),
>year=seq(2010, 2012,1), month=month))
>n=nrow(data)
>data$prec <- rgamma(n, 2, 0.25)
>data$year <- factor(data$year)
>data$lon  <- factor(data$lon)
>data$lat  <- factor(data$lat)
>ndata <- data[order(data$lon, data$lat),]
>fix(ndata)
>max <- max(ndata$prec, na.rm=TRUE)
>min <- min(ndata$prec, na.rm=TRUE)
>
>#Plot the graph and save as pdf by Mackay suggestion
>pdf("H:/file.pdf")
>library(latticeExtra)
>useOuterStrips(
>xyplot(prec~month|year*paste(lat,lon), data=ndata,
>as.table = T,
>type = c("l", "l","p"), ylim=c(min, max),
>layout=c(1,4)) )
>dev.off()#The actual data have more than 5 
>thousand data points, Just want to plot a few
>#selected randomly. Also, if I can put 5 data 
>points (nearest grids) in one graph
>#will be more helpful.
>
>
>Peter Maclean
>Department of Economics
>UDSM
>         [[alternative HTML version deleted]]
>
>______________________________________________
>R-help at 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.



More information about the R-help mailing list