I've had a busy time the past week, so this just comes now,
(and as "top-reply", unusually for me, and this list in general..).

I've been the one adding  axTicks() to R  a long time ago,
and also  axisTicks();  these are related but really have
different goals and in particular,

-  axTicks () is in pkg {graphics}  as it applies to there only, whereas
- axisTicks() is in pkg {grDevices} as it would/should/could also apply to
              packages {grid}, {lattice} {ggplot2} etc

Their help page "title + description"s are

1)  axTicks --- Compute Axis Tickmark Locations

   Description:

     Compute pretty tickmark locations, the same way as R does
     internally.  This is only non-trivial when *log*
     coordinates are active.  By default, gives the ‘at’ values
     which ‘axis(side)’ would use.


2)  axisTicks --- Compute Pretty Axis Tick Scales

   Description:

     Compute pretty axis scales and tick mark locations, the
     same way as traditional R graphics do it.  This is
     interesting particularly for log scale axes.

Hence I guess you should really use axisTicks() rather than
axTicks() in your case.

However, even though we have tweaked both functions over time, we may not have 
considered all
edge cases, so would improve them where needed (and not too edgy / complicated).

Can you try to see if axisTicks() does solve your problem /
serve your purpose ?

Best regards,
Martin


--
Martin Maechler
ETH Zurich  and  R Core team


> On 6/22/25 10:13, Duncan Murdoch wrote:
> > On 2025-06-22 8:15 a.m., Spencer Graves wrote:
> >> If the range fed to axTicks is too narrow, the output is only 2 points;
> >> shouldn't it degenerate to using "pretty" in such cases?

> >>
> >> EXAMPLE:
> >>
> >>
> >> ylims2 <- c(0.2, 0.8)
> >> get_axp <- function(x) 10^c(ceiling(x[1]), floor(x[2]))
> >> ## mimic par("yaxs") == "i"
> >> usr.i2 <- log10(ylims2)
> >> (aT.i2 <- axTicks(side = 2, usr = usr.i2,
> >>         axp = c(get_axp(usr.i2), n = 3), log = TRUE, nintLog = 5))
> >> #[1] 0.2 0.5
> > 
> > I don't understand your point.  If I do
> > 
> >    plot(ylims2, ylims2, log="xy", yaxs="i", xaxs="r")
> > 
> > then both axes get ticks at the pretty(ylims2) locations.  If I set yaxp 
> > or xaxp to the  values you used, then I get c(0.2, 0.5), but why would I 
> > do that?


> I want to plot one set of points and lines with 3 axes for both : for 
> the cumulative hazard (H), the survival probability [S = exp(-H)], and 
> the probability of failure (1-S).


> I'm programming around it. This may be too rare an application to bother 
> with.


> Thanks for the reply. Spencer Graves


> p.s. My specific application is my claim that the hazard rate for a 
> nuclear war in the next year increases with the time since the last 
> detonation in anger, namely Nagasaki 1945-08-09, for two reasons: (1) 
> Nuclear proliferation and (2) managers of complex systems subject to 
> rare but catastrophic failures "learn" from experience that they can 
> "safely" take ever greater risks -- until a catastrophe proves them 
> wrong. I estimate a range of subjective probabilities that each of 13 
> major "nuclear close calls" like the 1962 Cuban missile crisis might 
> have actually ended in a nuclear war, converted each range into a range 
> for the cumulative hazard for each incident, then summed imputed means 
> and variances for the computed hazard to get a total cum hazard. Then I 
> converted that to the estimate of the Weibull scale parameter assuming 
> the shape parameter is 1, 1.5, or 2:

> https://docs.google.com/spreadsheets/d/18Iutk8BqmiBND06xbjCIP6DmxMKAliyxO9g88sL5e2Y/edit?usp=sharing

> After I get my plot, I plan to post a description of this to Wikiveristy 
> and then circulate that to leading experts and potential collaborators 
> in getting something on this published.

> > 
> > Duncan Murdoch
> >

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to