[Rd] bug in plot.table(..., log='y')?
Bill Dunlap
w||||@mwdun|@p @end|ng |rom gm@||@com
Mon May 30 18:38:45 CEST 2022
Martin wrote
If you have a table with 0 counts and think you'd prefer
log="y" --- something I strongly agree is often a good idea,
giving much more useful plots ---
I'd consider in this case using the good old
log( 1+ y )
or log( eps+ y ) trick.
One could also sqrt(y), which helps stabilize the variances of count data.
Making nicely spaced and labelled tick marks for these transformations can
be a pain. Perhaps some package already does this.
-Bill
On Mon, May 30, 2022 at 3:41 AM Martin Maechler <maechler using stat.math.ethz.ch>
wrote:
> >>>>> Spencer Graves
> >>>>> on Sat, 28 May 2022 11:41:49 -0500 writes:
>
> > On 5/28/22 11:23 AM, Duncan Murdoch wrote:
> >> On 28/05/2022 11:33 a.m., Spencer Graves wrote:
> >>> Dear R Developers:
> >>>
> >>>
> >>> Consider the following example:
> >>>
> >>>
> >>> (tstTable <- table(rep(1:3, 3:1))) plot(tstTable)
> >>> plot(tstTable, log='y')
> >>>
> >>>
> >>> "plot(tstTable)" works as expected.
> >>> "plot(tstTable, log='y')" gives a warning:
> >>>
> >>>
> >>> Warning message: In plot.window(...) : nonfinite
> >>> axis=2 limits [GScale(-inf,0.477121,..); log=TRUE] --
> >>> corrected now
> >>>
> >>>
> >>> AND the plot has a y axis scale running from
> >>> 1e-307 to 1e+13.
> >>>
> >>>
> >>> This is with R 4.2.0 (R Console and the current
> >>> RStudio) under macOS 11.6.6.
> >>>
> >>>
> >>> "plot(as.numeric(names(tstTable),
> >>> as.numeric(tstTable), log='y'))" works as expected ;-)
> >>>
> >>>
> >>> Comments? Thanks for your valuable work in
> >>> making it easier for people everywhere to do quality
> >>> statistics.
> >>
> >> The help page ?plot.table says that ylim defaults to c(0,
> >> max(x)), i.e. c(0,3) in your example. If you're asking
> >> to plot that on a log scale, there are bound to be
> >> problems.
> >>
> >> If you specify ylim, e.g. as c(min(tstTable),
> >> max(tstTable)), things are fine in your example; they
> >> won't be in examples where the min is zero.
> >>
> >> Duncan Murdoch
>
> > Thanks. I looked at the help file but didn't read it
> > carefully enough.
>
> > Spencer
>
> If you have a table with 0 counts and think you'd prefer
> log="y" --- something I strongly agree is often a good idea,
> giving much more useful plots ---
>
> I'd consider in this case using the good old
> log( 1+ y )
> or log( eps+ y ) trick.
>
> My colleague Werner Stahel has spent quite a bit of effort in
> order to make such "log-transformed plots in case of {zero etc}"
> plot even smarter and convenient...
> and has put this (and many more related ideas of doing smart and
> robust good data analysis) in his package 'plgraphics'
> (on R-forge, but still not on CRAN unfortunately).
> With many thanks to Ian Howson, still nicely available also here:
>
> https://rdrr.io/rforge/plgraphics/
>
> His generalized log(1 + y) is plgraphics::logst(),
> documented on the rdrr mirror here
> https://rdrr.io/rforge/plgraphics/man/logst.html
>
> Martin
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
[[alternative HTML version deleted]]
More information about the R-devel
mailing list