[R] surface plots using wireframe, color at high res, grid at low res?

Duncan Mackay mackay at northnet.com.au
Sun Jul 7 00:04:18 CEST 2013


Hi Patrick

You should do better by using a specific graphic device and then send 
the file to the printer

...
n.cuts=300
u1.corrd=(1:n.cuts-.5)/n.cuts
u2.corrd=(1:n.cuts-.5)/n.cuts
shareframe=data.frame(expand.grid(u1.corrd,u2.corrd))
shareframe$z.dir=normal.copula(shareframe$Var1,shareframe$Var2,rho.boat)
names(shareframe)=c("u1.dir","u2.dir","z.dir")

trellis.device(device = postscript,
                file = "copula1.ps",
                title = "",
                colormodel = "srgb")

wireframe(shareframe$z.dir~ shareframe$u1.dir*shareframe$u2.dir,
   scales = list(arrows=FALSE,col=1),
   drape = c(TRUE),
   par.settings=list(axis.line=list(col="transparent")),
   col="transparent",
   colorkey = FALSE,
   paper = "special",
   horizontal = "FALSE",
   height = 18,
   width =18,
   screen = list(z = 195,y=180, x = 105),
   col.regions = census.color.function((1:10000-.5)/10000),
   xlab = expression(U[1]), ylab = expression(U[2]), zlab="Density",main=" "
   )

dev.off()

see ?trellis.device and ?Devices

You will have to modify the arguments to suit the graph and your device.
If you use a device like png use a high resolution value

HTH

Duncan


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



At 07:55 6/07/2013, you wrote:
>Hello,
>
>I'm working on some simple copula plots for a poster presentation, 
>and by simple I mean simple, gaussian, etc., etc., etc.
>
>I know I might be taking this a bit too far but I'm trying to see if 
>I can overlay one surface plot over another.  I want to use color 
>but I like the addition of a black wireframe to hold together a 
>better sense of shape.
>
>Right now, I have it set up to create a 300x300 colored surface 
>using col="transparent", and I'd like to add a n x n (10, 20, 
>whatever) on top of this.  Right now I'm using wireframe and I'm 
>using my employer's official colors for gradient coloring.  My code 
>is below.  I apologize for the code length but it does execute the 
>way I want from a new session.
>
>I'm also curious as to why I'm some grid effects or lighting effects 
>(unsure of which) that I'm using on my personal 3.0.1 copy on 
>Mountain Lion OSX, that I wasn't getting on 2.14.1 on Windows XP... 
>something to figure out for another time.  This is a much more 
>secondary concern for which I have a solution (compile the final 
>graphic at work).  For now I'm just trying to see if its possible to 
>lay a smaller resolution grid over the colored high resolution grid.
>
>I will say that other help documents have been very useful to get 
>the code along to this point.
>
>Sincerely,
>
>Patrick Joyce
>
>Work e-mail:  patrick.m.joyce at census.gov
>
>
>library(RColorBrewer)
>library(colorspace)
>
>
>library(lattice)
>
>normal.copula=function(u1,u2,rho){
>
>x1=qnorm(u1)
>x2=qnorm(u2)
>
>1/(2*pi)/sqrt(1-rho^2)*exp(-1/2*(x1^2+x2^2-rho*x1*x2)/(1-rho^2))/dnorm(x1)/dnorm(x2)
>
>}
>
>new.census.red="#AB0537"
>new.census.blue="#0A6FB7"
>
>ncred=hex2RGB(new.census.red)
>ncblue=hex2RGB(new.census.blue)
>ncwhite=hex2RGB("#FFFFFF")
>
>census.color.function=function(alpha.cen){
>out.hex=ifelse(alpha.cen<.5,hex(mixcolor(2*alpha.cen,ncblue,ncwhite),fixup=TRUE),ifelse(alpha.cen==.5,"#FFFFFF",hex(mixcolor(2*alpha.cen-1,ncwhite,ncred),fixup=TRUE)))
>
>out.hex
>
>}
>
>rho.boat=.7
>
>n.cuts=300
>u1.corrd=(1:n.cuts-.5)/n.cuts
>u2.corrd=(1:n.cuts-.5)/n.cuts
>shareframe=data.frame(expand.grid(u1.corrd,u2.corrd))
>shareframe$z.dir=normal.copula(shareframe$Var1,shareframe$Var2,rho.boat)
>names(shareframe)=c("u1.dir","u2.dir","z.dir")
>
>plot.new()
>wireframe(shareframe$z.dir~ shareframe$u1.dir*shareframe$u2.dir,
>   xlab = expression(U[1]), ylab = expression(U[2]), zlab="Density",main=" ",
>
>scales = list(arrows=FALSE,col=1),
>   drape = c(TRUE),
>
>par.settings=list(axis.line=list(col="transparent")),col="transparent",colorkey 
>= FALSE,
>   screen = list(z = 195,y=180, x = 105),col.regions = 
> census.color.function((1:10000-.5)/10000))
>
>
>         [[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