Re: [R] lattice::panel.levelplot.raster too picky with unequal spacing

2010-06-05 Thread baptiste auguie
Hi again,

Another thought on this new function. Would it be possible to adapt
the colour scale in the legend to use grid.raster as well, so that
when the panel performs a smooth interpolation the legend also does
the same? It's particularly clear when saving as a pdf, where viewer
artifacts create spurious and visually unpleasant white bands between
the different colour levels.

I wrote a function for another package that may be useful here,

colorStrip -
  function (fill = 1:3, colour = fill, draw = TRUE, raster = FALSE,
direction = c(vertical, horizontal))
{

  fill.numeric - is.numeric(fill)
  fill[fill.numeric] - rgb(t(col2rgb(fill[fill.numeric])), maxColorValue=255)

  direction - match.arg(direction)

  my.grob - if (raster) {

fillm - switch(direction,
horizontal = matrix(fill, nrow = 1),
vertical =  matrix(fill, ncol = 1))

rasterGrob(fillm, x = unit(0.5, npc),
   y = unit(0.5, npc), width = unit(1, npc),
   height = unit(1, npc), just = centre,
   hjust = NULL, vjust = NULL,
   interpolate = TRUE, default.units = npc, name = NULL,
   gp = gpar(), vp = NULL)
} else {
positions - cbind(seq(0 + 0.5/length(fill),
   1 - 0.5/length(fill), length = length(fill)),
   rep(0.5, length(fill)),
   1/length(fill), 1)

xy - switch(direction,
 horizontal = positions[, 1:4],
 vertical =  positions[, c(2:1, 4:3)])

grid.rect(x = unit(xy[, 1], npc), y = unit(xy[, 2], npc),
  width = unit(xy[, 3], npc),
  height = unit(xy[, 4], npc), just = center,
  hjust = NULL, vjust = NULL, default.units = npc,
  name = NULL, gp = gpar(fill = fill, col = colour),
  draw = FALSE, vp = NULL)
  }
  if (draw)
grid.draw(my.grob)

  my.grob
}

# testing
cols - c(#4C00F0, #0046EC, #00E2BF, #00FF00, #00FF00,
#92E500, #FFA100, #FF3100, #FF)

pdf(colortest.pdf)
colorStrip(cols, raster=T, direction=vertical)
grid.newpage()
colorStrip(cols, raster=F, direction=vertical)
grid.newpage()
colorStrip(cols, raster=T, direction=horizontal)
grid.newpage()
colorStrip(cols, raster=F, direction=horizontal)
dev.off()


Best,

baptiste

On 18 May 2010 15:30, Deepayan Sarkar deepayan.sar...@r-project.org wrote:
 On Tue, May 18, 2010 at 6:32 PM, baptiste auguie
 baptiste.aug...@googlemail.com wrote:
 Dear all,

 I got a couple of warnings using panel.levelplot.raster,

 In panel.levelplot.raster(..., interpolate = TRUE) :
  'y' values are not equispaced; output will be wrong

 although I was quite sure my data were equally spaced (indeed, I
 created them with seq()). A closer look at the source code reveals
 that the function tests for exact uniformity in grid spacing,

  if (length(unique(diff(uy))) != 1)
            warning('x' values are not equispaced; output will be wrong)

 Maybe a better test would be

 isTRUE(all.equal(diff(range(diff(ux))), 0))

 I'll try that out for the next release.

 -Deepayan


 The following dummy example would suggest that a strict equality is
 not always suitable,

 x - seq(0, 50, length=100)
 ux - sort(unique(x[!is.na(x)]))
 length(unique(diff(ux)))
 # 8
 sd(unique(diff(ux)))
 #  2.462951e-15

 Suggestions / comments are welcome.

 Best regards,

 baptiste


 sessionInfo()
 R version 2.11.0 RC (2010-04-16 r51754)
 i386-apple-darwin9.8.0

 locale:
 [1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base

 other attached packages:
 [1] lattice_0.18-5

 loaded via a namespace (and not attached):
 [1] grid_2.11.0  tools_2.11.0



 --

__
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.


[R] lattice::panel.levelplot.raster too picky with unequal spacing

2010-05-18 Thread baptiste auguie
Dear all,

I got a couple of warnings using panel.levelplot.raster,

In panel.levelplot.raster(..., interpolate = TRUE) :
  'y' values are not equispaced; output will be wrong

although I was quite sure my data were equally spaced (indeed, I
created them with seq()). A closer look at the source code reveals
that the function tests for exact uniformity in grid spacing,

 if (length(unique(diff(uy))) != 1)
warning('x' values are not equispaced; output will be wrong)

The following dummy example would suggest that a strict equality is
not always suitable,

x - seq(0, 50, length=100)
ux - sort(unique(x[!is.na(x)]))
length(unique(diff(ux)))
# 8
sd(unique(diff(ux)))
#  2.462951e-15

Suggestions / comments are welcome.

Best regards,

baptiste


sessionInfo()
R version 2.11.0 RC (2010-04-16 r51754)
i386-apple-darwin9.8.0

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats graphics  grDevices utils datasets  methods   base

other attached packages:
[1] lattice_0.18-5

loaded via a namespace (and not attached):
[1] grid_2.11.0  tools_2.11.0



-- 


Baptiste Auguié

Departamento de Química Física,
Universidade de Vigo,
Campus Universitario, 36310, Vigo, Spain

tel: +34 9868 18617
http://webs.uvigo.es/coloides

__
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.


Re: [R] lattice::panel.levelplot.raster too picky with unequal spacing

2010-05-18 Thread Deepayan Sarkar
On Tue, May 18, 2010 at 6:32 PM, baptiste auguie
baptiste.aug...@googlemail.com wrote:
 Dear all,

 I got a couple of warnings using panel.levelplot.raster,

 In panel.levelplot.raster(..., interpolate = TRUE) :
  'y' values are not equispaced; output will be wrong

 although I was quite sure my data were equally spaced (indeed, I
 created them with seq()). A closer look at the source code reveals
 that the function tests for exact uniformity in grid spacing,

  if (length(unique(diff(uy))) != 1)
            warning('x' values are not equispaced; output will be wrong)

Maybe a better test would be

isTRUE(all.equal(diff(range(diff(ux))), 0))

I'll try that out for the next release.

-Deepayan


 The following dummy example would suggest that a strict equality is
 not always suitable,

 x - seq(0, 50, length=100)
 ux - sort(unique(x[!is.na(x)]))
 length(unique(diff(ux)))
 # 8
 sd(unique(diff(ux)))
 #  2.462951e-15

 Suggestions / comments are welcome.

 Best regards,

 baptiste


 sessionInfo()
 R version 2.11.0 RC (2010-04-16 r51754)
 i386-apple-darwin9.8.0

 locale:
 [1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base

 other attached packages:
 [1] lattice_0.18-5

 loaded via a namespace (and not attached):
 [1] grid_2.11.0  tools_2.11.0



 --
 

 Baptiste Auguié

 Departamento de Química Física,
 Universidade de Vigo,
 Campus Universitario, 36310, Vigo, Spain

 tel: +34 9868 18617
 http://webs.uvigo.es/coloides
 



__
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.


Re: [R] lattice::panel.levelplot.raster too picky with unequal spacing

2010-05-18 Thread baptiste auguie
On 18 May 2010 15:30, Deepayan Sarkar deepayan.sar...@r-project.org wrote:

 Maybe a better test would be

 isTRUE(all.equal(diff(range(diff(ux))), 0))

 I'll try that out for the next release.



Sounds good (and works for me), thanks.

baptiste

__
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.