[R] date format in xyplot

Duncan Mackay dulcalma at bigpond.com
Tue Aug 18 16:56:35 CEST 2015


Hi

I forgot to change the format and put the panel back in - I was trying to get the data right

see ? strptime for a list of all the combinations for dates.

Have a look at 
http://lmdvr.r-forge.r-project.org/figures/figures.html
which may give you some ideas.

If you want  to restrict data to a certain period you will have to put limits on the x axis and you do that in the scales argument ie x =list(limits = c(min date, max date) )  NB date format
For one panel it is easy but for 2+ it can be tricky as you will be working with a list. 
Then the code would be something like

xyplot(Abun~Date2|Year, Raw, 
            scales = list(x = list(limits = list(c(min y1, max y1), c(min y2, max y2))) 
..
)
where y[1...] is the applicable year 
have a look at aspect which may improve things for the final plot if desired.

If you want to space groups of years-- see between 
 
Regards

Duncan

-----Original Message-----
From: Christine Lee [mailto:leptostracan at yahoo.com] 
Sent: Wednesday, 19 August 2015 00:26
To: R; Duncan Mackay
Subject: RE: [R] date format in xyplot

Thank you Duncan,

I have tried the scales function.  It ends up with 2015-09-15, which is acceptable. It is far much better than "09 15" shown on the axis.  The problem is the data were obtained in different years.  This makes "2015" shown in lattice plots of different years.  I have tried to put in the year in the raw data (such as "1/10/2013"), but the plot is really bizzard, with the 2002 plots have all the points on the left of the plot whereas 2013 plots have all the data points on the right of the plots because the x-axis shows data from 2001 to 2013.  I feel like hopeless to insist to have the axis label shown as "Sep 15" because it seems to be the problem of my computer setting.  Is there a way to shows graphs in different years, but with the same scale beginning from September to December?

Regards,
Christine


--------------------------------------------
2015年8月18日 星期二,Duncan Mackay <dulcalma at bigpond.com> 寫道﹕

 主題: RE: [R] date format in xyplot
 收件人: "R" <r-help at r-project.org>
 副本(CC): "'Christine Lee'" <leptostracan at yahoo.com>
 日期: 2015年8月18日,星期二,下午4:08

 Hi Christine

 If somethings go wrong:
 1 first check your data

 str(Raw)
 'data.frame':   10 obs. of 
 5 variables:
  $ Date   : Factor
 w/ 16 levels "1/10","1/11",..: 6 7 2 4
 12 9 7 2 4 12
  $ Year   : int 
 2002 2002 2002 2002 2002 2002 2002 2002 2002 2002
  $ Station: Factor w/ 4 levels
 "E","F","H","I": 1 1
 1 1 1 2 2 2 2 2
  $ Abun   : num 
 3.42 1.33 3.67 3.67 3.92 2.17 2.5 1.67 6.33 0.67
  $ Date1  : Date, format:
 "2015-09-19" "2015-10-02"
 "2015-11-01"
 "2015-11-12" ...

 Raw$Date2 <- as.character(Raw$Date1)
 Raw$Date2
 [1]
 "2015-09-19" "2015-10-02"
 "2015-11-01" "2015-11-12"
 "2015-11-29"
 "2015-09-20" "2015-10-02"
 "2015-11-01" "2015-11-12"
 "2015-11-29"
 Raw$Date2 <-
 as.Date(Raw$Date2, "%Y-%m-%d")

 2 read the help guide again if not done
 recently ?lattice::xyplot or ?xyplot
 3 start
 with a minimum number of arguments

 xyplot(Abun~Date2|as.factor(Year), Raw)
 or 
 xyplot(Abun~Date2, Raw)
 if you are still having problems

 Dates are hard work in any
 language as they are not consistent so:
 a. 
 use  default
 b.  use your own 

 This works

 xyplot(Abun~Date2|as.factor(Year), Raw,
        par.settings =
 list(stripbackground = "transparent"), #
 background
 colour controlled here
        type="p",
        scales = list(x = list(at =
 sort(c(seq(as.Date(Raw$Date2[1]-4), by =
 "months", length = 4),
                                
            seq(as.Date(Raw$Date2[1]+12),
 by
 = "months", length = 3))),
                            
    labels =
 format(sort(c(seq(as.Date(Raw$Date2[1]-4), by =
 "months", length = 4),
  
 seq(as.Date(Raw$Date2[1]+12), by =
 "months", length = 3))), "%m-%d") )
 ),
    
    xlab=list("Month",cex=1.5),
    
    ylab=list("Abundance",cex=1.5),
        cex=2,
  
      pch=c(16,16,21),
    
    col=c("Black","Grey","Black")
 )

 par.settings
 is confining the parameters set by trellis.par.set()  to
 the
 function
 to get them

 names(trellis.par.get() )
 and going further
 trellis.par.get()$superpose.symbol
 will give you the values for
 superpose.symbol

 Beware: Do
 not make the labels etc so big that the axis labels are hard
 to
 read. Think of final size

 Regards

 Duncan

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

 -----Original Message-----
 From: R-help [mailto:r-help-bounces at r-project.org]
 On Behalf Of Christine
 Lee via R-help
 Sent: Tuesday, 18 August 2015 14:16
 To: r-help at r-project.org
 Subject: [R] date format in xyplot

 To whom it may concern,

 I have tried to plot some
 numbers against time with the time on the X-axis
 shown as "Jan", "Feb",
 etc.

 I used the following
 commands:
 Raw<-structure(list(Date =
 structure(c(6L, 7L, 2L, 4L, 12L, 9L, 7L, 
 2L, 4L, 12L), .Label = c("1/10",
 "1/11", "11/11", "12/11",
 "13/10", 
 "19/9",
 "2/10", "2/11", "20/9",
 "26/11", "29/10", "29/11",
 "30/11", 
 "31/10",
 "4/10", "6/10"), class =
 "factor"), Year = c(2002L, 
 2002L,
 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L
 ), Station = structure(c(1L, 1L, 1L, 1L, 1L,
 2L, 2L, 2L, 2L, 
 2L), .Label =
 c("E", "F", "H",
 "I"), class = "factor"), Abun = c(3.42,

 1.33, 3.67, 3.67, 3.92, 2.17, 2.5, 1.67,
 6.33, 0.67), Date1 =
 structure(c(16697, 
 16710, 16740, 16751, 16768, 16698, 16710,
 16740, 16751, 16768
 ), class =
 "Date")), .Names = c("Date",
 "Year", "Station", "Abun", 
 "Date1"), row.names = c(NA, 10L),
 class = "data.frame")

 Raw$Date1<-as.Date(Raw$Date,"%d/%m")
 xyplot(Abun~Date1|as.factor(Year),Raw,type="p",xlab=list("Month",cex=1.5),yl
 ab=list("Abundance",cex=1.5),cex=2,pch=c(16,16,21),col=c("Black","Grey","Bla
 ck"),strip=strip.custom(bg='white'),format="%B-%d")

 The date format shown on
 X-axis was just "10-1", "10-15"

 I should be grateful if any
 one could help indicating what has gone wrong?

 Regards,
 Christine

 ______________________________________________
 R-help at r-project.org
 mailing list -- To UNSUBSCRIBE and more, see
 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