Skip to content

Using a constant scale across X-Y plots

2 messages · Lisa, Dieter Menne

#
I am working off an example from Deepayan Sarkar's  
Lattice:Multivariate Data Visualiization with R. I am trying to create  
Figure 5.6, essentially, but I would like to be able depict different  
metro areas.  These of course  have different lat/longs, so I need to  
make different graphs.  BUT (and this has been the tricky part), I  
would like to produce graphics for each metropolitan region using the  
same depth scale for all, so that dark gray means the same thing  
consistently.

  That's the part that is proving way too hard for my little brain and  
limited R experience.

I'm assuming I don't have to include the quakes data to play around  
with.

depth.col <- gray.colors(100)[cut(quakes$depth, 100, label = FALSE)]

depth.ord <- rev(order(quakes$depth))

depth.breaks <- do.breaks(range(quakes.ordered$depth), 50)

quakes.ordered$color <- level.colors(quakes.ordered$depth, at =  
depth.breaks, col.regions = gray.colors)

xyplot(lat ~ long | Magnitude, data = quakes.ordered, aspect = "iso",  
groups = color, cex = 2, col = "black", panel = function(x, y,  
groups, ..., subscripts) { fill <- groups[subscripts] panel.grid(h =  
-1, v = -1) panel.xyplot(x, y, pch = 21, fill = fill, ...) }, legend =  
list(right =
list(fun = draw.colorkey, args = list(key = list(col = gray.colors, at  
= depth.breaks), draw = FALSE))), xlab = "Longitude", ylab = "Latitude")

Any ideas how how I might approach this?

Many thanks.
Lisa
#
Lisa <lschwei <at> mac.com> writes:
...
You should. Please do not post incomplete examples again. It costs you 
nothing to include the example from 

http://lmdvr.r-forge.r-project.org/figures/figures.html

but everyone else has to find the right place or get the examples from the 
book. Only when data can be used exactly as in a freshly started Rgui you 
can omit these.

And linefeeds matter in R, so your example below needs a lot of reformatting.
This might give you a starter. I simply made east/west out of it, because 
I do not know US definitions of metropolitan areas. Please, if you have 
further questions, modify the example below and make it Gui-pastable 
1:1 without additions.

------------------------
library(lattice)
quakes$Magnitude <- equal.count(quakes$mag, 4)
depth.ord <- rev(order(quakes$depth))
quakes$area <- as.factor(ifelse(quakes$long>175,"west","east"))
depth.col <- gray.colors(100)[cut(quakes$depth, 100, label = FALSE)]
quakes.ordered <- quakes[depth.ord, ]

depth.ord <- rev(order(quakes$depth))
depth.breaks <- do.breaks(range(quakes.ordered$depth), 50)

quakes.ordered$color <- level.colors(quakes.ordered$depth, at =
depth.breaks, col.regions = gray.colors)


xyplot(lat ~ long | Magnitude*area, data = quakes.ordered,
  aspect = "iso", groups = color, cex = 2, col = "black",
  panel = function(x, y,groups, ..., subscripts) {
    fill <- groups[subscripts]
    panel.grid(h =-1, v = -1)
    panel.xyplot(x, y, pch = 21, fill = fill, ...) },
    legend = list(
      right = list(fun = draw.colorkey,
               args = list(key = list(
        col = gray.colors, at= depth.breaks),draw = FALSE))),
      xlab = "Longitude",
      ylab = "Latitude")