[R] Σχετ: show 0 at y axis in xyplot lattice
Michael Dewey
lists at dewey.myzen.co.uk
Tue Sep 12 19:22:36 CEST 2017
Dear Maria
The file you attached to your first e-mail did come through but I think
some people on the list must have missed it.
Michael
On 12/09/2017 12:54, Maria Lathouri via R-help wrote:
> Dear all,
> Thank you very much for the help. ylim=c(-5, 80) worked.
> Regarding the reproducible example, I used dput () and saved the file as txt. It is not the first time that I used this way and normally it works. Because when I try to attach a .csv file with the data, most of the time it doesn't go through.
> I will know for the next time.
> Many thanks.
> Regards,Maria
>
> Στις 2:11 π.μ. Τρίτη, 12 Σεπτεμβρίου 2017, ο/η Duncan Mackay <dulcalma at bigpond.com> έγραψε:
>
>
> Hi Maria
>
> Rule 1 make sure your data is in the right format
>
> dat <- source("G:/1/savedat.txt")
>> dat
> $value
> Location Date Zn2 upper.zn lower.zn
> 1 upstream 2016-04-27 29.92477 55.59800 13.912207
> 2 spill 2016-04-27 12.84040 22.07006 6.964934
> 3 downstream 2016-04-27 22.49673 41.60901 11.739109
> 4 upstream 2016-06-28 23.98425 45.60219 10.690640
> 5 spill 2016-06-28 41.51336 77.99893 20.142426
> 6 downstream 2016-06-28 15.51232 26.94059 7.044781
> 7 upstream 2016-08-25 21.73037 40.95852 10.354620
> 8 spill 2016-08-25 13.42082 22.96901 7.472893
> 9 downstream 2016-08-25 10.99209 20.17471 5.324318
> 10 upstream 2016-10-25 20.82462 40.60564 9.602007
> 11 spill 2016-10-25 14.01283 25.07032 7.830504
> 12 downstream 2016-10-25 15.67740 30.42278 6.971944
> 13 upstream 2016-12-21 28.14966 51.79390 14.384139
> 14 spill 2016-12-21 13.91587 23.94368 8.164688
> 15 downstream 2016-12-21 13.02749 24.46930 5.826650
> 16 upstream 2017-02-20 31.16736 55.51858 15.938211
> 17 spill 2017-02-20 12.47368 22.03830 6.725540
> 18 downstream 2017-02-20 17.65741 33.23577 8.519928
>
> $visible
> [1] TRUE
> dat <- dat$value
> dat$dDate <- as.Date(as.character(dat$Date))
>
> str(dat)
> 'data.frame': 18 obs. of 6 variables:
> $ Location: Factor w/ 3 levels "downstream","spill",..: 3 2 1 3 2 1 3 2 1 3 ...
> $ Date : Factor w/ 6 levels "2016-04-27","2016-06-28",..: 1 1 1 2 2 2 3 3 3 4 ...
> $ Zn2 : num 29.9 12.8 22.5 24 41.5 ...
> $ upper.zn: num 55.6 22.1 41.6 45.6 78 ...
> $ lower.zn: num 13.91 6.96 11.74 10.69 20.14 ...
> $ dDate : Date, format: "2016-04-27" "2016-04-27" "2016-04-27" "2016-06-28" ...
>
> You code to reproduce the xyplot is not reproducible as it contains user defined objects which you have not included.
> Here is something to get you started,
> If you want the measurement dates on the x-axis you will need to put the required dates and format in the scales argument.
> Using par.settings for the symbols an lines will pass those values onto key
>
> xyplot(upper.zn + Zn2 + lower.zn ~ dDate | Location, data=dat,
> type = "b",
> as.table = TRUE,
> par.settings = list(strip.background = list(col = "transparent"),
> superpose.symbol = list( col=c("red", "black", "red"),
> cex = 1,
> pch = c(22, 21, 22)),
> superpose.line = list (col=c("red", "black", "red"),
> lty = c(2, 1, 2),
> lwd = 1)
> ),
> auto.key = list(points = TRUE, lines = TRUE),
> scales = list(x = list(alternating = FALSE,
> at = seq(from = as.Date("2016-04-01"), to = as.Date("2017-04-01"), by = "quarter"),
> label = format(seq(from = as.Date("2016-04-01"), to = as.Date("2017-04-01"), by = "quarter"), "%Y %b"),
> relation = "same",
> rot = 60),
> y = list(alternating = FALSE,
> at = seq(0,80,20),
> relation = "same",
> rot = 0)
> ),
> # pch=c(22, 21, 22),
> # lty=c(2, 1, 2),
> xlim = range(seq(from = as.Date("2016-04-01"), to = as.Date("2017-04-01"), by = "quarter")),
> ylim=c(-5, 80),
> index.cond=list(c(3, 1, 2)),
> ylab="Percent (%)",
> # par.strip.text=list(col="white", font=2, lines=1.5),
> # lattice.options = modifyList(lattice.options(), list(skip.boundary.labels = 0)),
> # par.settings=my.settings, col=c("red", "black", "red"), fill=c("red", "black", "red"),
> # key=dat_key,
> # scales = list(x = list(at = sdate, labels = format(sdate, "%b-%y"))), xlab="Date",
> panel = function(x, y, ...) {
> panel.grid(h = -1, v = 0, lwd=1, lty=3, col="grey")
> panel.abline(v=dat$dDate, lwd=1, lty=3, col="grey")
> panel.xyplot(x, y, ...)
> }
> )
>
> As you have upper and lower levels of Zn you may want to look at ?panel.polygon
>
> Regards
>
> Duncan
>
> Duncan Mackay
> Department of Agronomy and Soil Science
> University of New England
> Armidale NSW 2350
>
>
>
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Maria Lathouri via R-help
> Sent: Tuesday, 12 September 2017 05:33
> To: R-help Mailing List
> Subject: [R] show 0 at y axis in xyplot lattice
>
> Dear all
> I am trying to make a plot in xyplot lattice by groups. I would like to show "0" in y axis but I don't want to be aligned with the x axis. I want to be a little bit above.
> I have tried many options but I don't get what I want. I also tried ylim=c(0, 80) but both 0 and 80 are fully aligned with the x-axis and the upper boundary of the plot, respectively:
> xyplot(upper.zn + Zn2 + lower.zn ~ sdate | Location, type="b", as.table=TRUE, data=dat, pch=c(22, 21, 22), lty=c(2, 1, 2), ylim=c(0, 80),
> index.cond=list(c(3, 1, 2)), ylab="Percent (%)", par.strip.text=list(col="white", font=2, lines=1.5),
> lattice.options = modifyList(lattice.options(), list(skip.boundary.labels = 0)),
> par.settings=my.settings, col=c("red", "black", "red"), fill=c("red", "black", "red"),
> key=dat_key, scales = list(x = list(at = sdate, labels = format(sdate, "%b-%y"))), xlab="Date",
> panel = function(x, y, ...) {
> panel.grid(h = -1, v = 0, lwd=1, lty=3, col="grey")
> panel.abline(v=sdate, lwd=1, lty=3, col="grey")
> panel.xyplot(x, y, ...)
> }
> )
> when I use the following, 80 is a bit lower than the upper boundary of the plot, which is what I want, but 0 is not showing:
> xyplot(upper.zn + Zn2 + lower.zn ~ sdate | Location, type="b", as.table=TRUE, data=dat, pch=c(22, 21, 22), lty=c(2, 1, 2),
> index.cond=list(c(3, 1, 2)), ylab="Percent (%)", par.strip.text=list(col="white", font=2, lines=1.5),
> lattice.options = modifyList(lattice.options(), list(skip.boundary.labels = 0)),
> par.settings=my.settings, col=c("red", "black", "red"), fill=c("red", "black", "red"),
> key=dat_key, scales = list(x = list(at = sdate, labels = format(sdate, "%b-%y")), y=list(at=c(0, 20, 40, 60, 80))), xlab="Date",
> panel = function(x, y, ...) {
> panel.grid(h = -1, v = 0, lwd=1, lty=3, col="grey")
> panel.abline(v=sdate, lwd=1, lty=3, col="grey")
> panel.xyplot(x, y, ...)
> }
> )I have also attached a reproducible example in case you want to see in more detail my data.
> I would very much appreciate any suggestions on this.
> Thank you in advance.
> Kind regards,Maria
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
> ---
> This email has been checked for viruses by AVG.
> http://www.avg.com
>
--
Michael
http://www.dewey.myzen.co.uk/home.html
More information about the R-help
mailing list