[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