Logarithmic y-axis Tick Marks in R plot() or ggplot2()

后端 未结 4 643
梦谈多话
梦谈多话 2021-02-03 10:14

I saw the ideal tick-mark structure for a log=\"y\" plot in this paper, Figure 3b 3c 3d.

It has short, log-spaced minor tick marks without labels, plus long

4条回答
  •  伪装坚强ぢ
    2021-02-03 11:09

    In base R just build the axes however you want. Something like this could be a start.

    set.seed(5)
    d <- data.frame(x=1:100, y=rlnorm(100, meanlog=5, sdlog=3))
    with(d, {
      plot(x, y, log="y", yaxt="n")
      y1 <- floor(log10(range(y)))
      pow <- seq(y1[1], y1[2]+1)
      ticksat <- as.vector(sapply(pow, function(p) (1:10)*10^p))
      axis(2, 10^pow)
      axis(2, ticksat, labels=NA, tcl=-0.25, lwd=0, lwd.ticks=1)
    })
    

    In lattice, the latticeExtra package has the capability:

    library(lattice)
    library(latticeExtra)
    xyplot(y~x, data=d, scales=list(y=list(log=10)),
           yscale.components=yscale.components.log10ticks)
    

提交回复
热议问题