gpt4 book ai didi

r - 在 R 中的 x Axis 上显示次要对数刻度

转载 作者:行者123 更新时间:2023-12-03 21:26:22 24 4
gpt4 key购买 nike

我有一个正态分布图和一个直方图,其中 x Axis 以对数刻度显示 0、10^0、10^1 ......我想在主要刻度之间包含次要刻度。实际上,我能够使用 previous question 中给我的解决方案将主要刻度格式从 1、2、3 等更改为 10^0、10^1、10^2、10^3。 .我对主要刻度使用了以下代码:

major.ticks <- axTicks(1)
labels <- sapply(major.ticks,function(i)
as.expression(bquote(10^ .(i)))
)
axis(1,at=major.ticks,labels=labels)

这可以编辑为只标记小刻度而不标记它们吗?

最佳答案

有一个功能minor.tick包裹内Hmisc ,但那个处理对数尺度的效果很差。我使用以下函数来获取遵循对数刻度的小刻度。 ax是您使用它的 Axis (与函数 axis 相同),n是次要刻度的数量(默认为 9),t.ratio是主要和次要刻度之间的比率,并且具有 ...您可以将额外的参数传递给 axis
编辑:评论中的好主意,所以我编辑了我的函数。有两个额外的参数,mnmx对于对数刻度上的最小值和最大值( mn=0 因此意味着最小值是 10^0 或 1 !)

功能:

minor.ticks.axis <- function(ax,n,t.ratio=0.5,mn,mx,...){

lims <- par("usr")
if(ax %in%c(1,3)) lims <- lims[1:2] else lims[3:4]

major.ticks <- pretty(lims,n=5)
if(missing(mn)) mn <- min(major.ticks)
if(missing(mx)) mx <- max(major.ticks)

major.ticks <- major.ticks[major.ticks >= mn & major.ticks <= mx]

labels <- sapply(major.ticks,function(i)
as.expression(bquote(10^ .(i)))
)
axis(ax,at=major.ticks,labels=labels,...)

n <- n+2
minors <- log10(pretty(10^major.ticks[1:2],n))-major.ticks[1]
minors <- minors[-c(1,n)]

minor.ticks = c(outer(minors,major.ticks,`+`))
minor.ticks <- minor.ticks[minor.ticks > mn & minor.ticks < mx]


axis(ax,at=minor.ticks,tcl=par("tcl")*t.ratio,labels=FALSE)
}

这可以应用如下:
x <- 10^(0:8)
y <- 1:9
plot(log10(x),y,xaxt="n",xlab="x",xlim=c(0,9))
minor.ticks.axis(1,9,mn=0,mx=8)

给出:

enter image description here

关于r - 在 R 中的 x Axis 上显示次要对数刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com