joehl@web.de
2001-Jan-19 15:53 UTC
AW: [Rd] Re: some problems with windows(rescale=) (PR#794)
Thanks to Prof. Brian Ripley and Guido Masarotto for fixing the initial rescaling of windows(rescale="fixed"). Now I can provide more detailed desciptions how to replicate the other problems I observed. concerning 2) wrong row distances with windows(rescale="fit") just use function testit() to see what I mean # comparing the two devices appears normal testit(width=8, height=6) # compare the two devices for DIN A4 # with rescale="fit" lines are closer together testit(width=16.53543, height=11.69291) # exagerate effect testit(width=32, height=24) ## the following function closes all devices ## creates two devices of the specified size ## with rescale="R" and rescale="fit" ## determines cex needed to fill the window (in x direction) and fills it testit <- function(width, height){ stroptim <- function(str, width=NULL, height=NULL, units="user", range.cex=c(0.01, 24)){ units <- match.arg(units, c("user", "figure", "inches")) m <- max(length(str), length(width), length(height)) str <- rep(str, length=m) wcex <- hcex <- rep(Inf, m) if (!is.null(width)){ fn <- function(cex, str, width)strwidth(str, cex=cex, units=units)-width frange <- rbind(fn(range.cex[1], str, width), fn(range.cex[2], str, width)) for (i in seq(length=m)){ if (prod(sign(frange[,i]))<0){ u <- uniroot(fn, range.cex, str=str[i], width=width[i]) wcex[i] <- u$root }else{ wcex[i] <- range.cex[which.min(abs(frange[,i]))] } } } if (!is.null(height)){ fn <- function(cex, str, height)strheight(str, cex=cex, units=units)-height frange <- rbind(fn(range.cex[1], str, height), fn(range.cex[2], str, height)) for (i in seq(length=m)){ if (prod(sign(frange[,i]))<0){ u <- uniroot(fn, range.cex, str=str[i], height=height[i]) hcex[i] <- u$root }else{ hcex[i] <- range.cex[which.min(abs(frange[,i]))] } } } pmin(wcex, hcex) } while (length(dev.list())) dev.off() jandltext <- "there is hardly anything i know for sure\nneither of the future nor of the past\nnor should i know what to ask\nif the person answering was you\n\n(Ernst Jandl, stanzen)" windows(width=width, height=height) par(cex=1) par(mai=c(0,0,0,0)) plot.new() par(usr=c(0,2,0,2)) text(1,1, jandltext, cex=stroptim(jandltext, width=diff(par("usr")[1:2]))) windows(width=width, height=height, rescale="fit") par(cex=1) par(mai=c(0,0,0,0)) plot.new() par(usr=c(0,2,0,2)) stroptim(jandltext, width=diff(par("usr")[1:2])) text(1,1, jandltext, cex=stroptim(jandltext, width=diff(par("usr")[1:2]))) } concerning 3a) windows(rescale="fit") destroys aspect ratio 3b) repeated rescaling destroys proper font size as well Degeneration of aspect ratio only happens if in WindowsNT | DisplayProperties | Plus! | ShowWindowContentsWhileDragging is ACTIVATED and one intensely uses the mouse to do extreme rescaling. Since this windows option is easy to deactivate, I have no further problems with that. Best regards Jens Oehlschlägel --please do not edit the information below-- Version: platform = i386-pc-mingw32 arch = x86 os = Win32 system = x86, Win32 status = major = 1 minor = 2.1 year = 2001 month = 01 day = 15 language = R Windows NT 4.0 (build 1381) Service Pack 6 Search Path: .GlobalEnv, package:ctest, Autoloads, package:base ______________________________________________________________________________ Die Fachpresse ist sich einig: WEB.DE 16mal Testsieger! Kostenlos E-Mail, Fax, SMS, Verschlüsselung, POP3, WAP....testen Sie uns! http://freemail.web.de -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._