### Re: [Rd] Reversing axis in a log plot (PR#7894)

UweL == Uwe Ligges [EMAIL PROTECTED] on Fri, 27 May 2005 11:42:54 +0200 (CEST) writes: UweL Please find attached my proposal for a bugfix. The UweL experts might to better, though. UweL Uwe Ligges Thank you, Uwe! Yes, your fix works, and yes, it can be improved (e.g., no need for the 'atr'; no 'reversed' when in the linear case, ..) Also, there won't be any warning either anymore, since plot(1:3, exp(1:3), xlim = c(30,1)) also gives no warning. You'll find the fixed plot.c in tomorrow's snapshot. Martin BTW: The whole thing {axis reversion} doesn't work in S-plus {doing a non-sensical plot, with tons of warnings} __ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel

### Re: [Rd] Reversing axis in a log plot (PR#7894)

Yes, this one is a bug in CreateAtVector, plot.c. It already has the lines: /* Debugging: When does the following happen... ? */ if (umin umax) warning(CreateAtVector \log\(from axis()): usr[0] = %g %g = usr[1] !, umin, umax); And now we know that it happens if (and only if?) the logarithmic scale is not very small (i.e. axp[2] 0, this is equal to R's par(yaxp)[3] in your example) and the axis are reversed (umin umax). I'll try to provide a fix which should be possible by reversing arguments axp and usr in this case and returning a reversed at ... Uwe Ligges [EMAIL PROTECTED] wrote: Full_Name: Christian Marquardt Version: 2.1.0 OS: Linux (Redhat 9) Submission from: (NULL) (151.170.240.10) Following the advice of a reader of R-help, I would now like to submit this as a bug report: Say we have x = seq(1,3, by = 0.01) y = exp(x) Plotting and reversing linear axis is fine plot(x,y) plot(x,y, ylim = c(30,1)) as is a usual log-plot: plot(x,y, log = y, ylim = c(1,30)) However, plot(x,y, log = y, ylim = c(30,1)) fails with Error in axis(2, ...) : log - axis(), 'at' creation, _SMALL_ range: invalid {xy}axp or par; axp[0]= 10, usr[0:1]=(34.3721,0.872801) In addition: Warning message: CreateAtVector log(from axis()): usr[0] = 34.3721 0.872801 = usr[1] ! According to Petr Pikal petr.pikal -at- precheza.cz, replacing the ylim argument by ylim = c(30,1.2) helps in the above example; but in my real world applications, it's actually difficult to find a working value for ylim. I hope this is useful, Christian. __ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel