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

Reply via email to