1

我试图用 10^n 值在每第三个刻度处标记一个轴,格式为上标。我正在使用grid图形。我正在做一些事情。这是一个 MWE(或者我看到有一些运动称它为 reprex):

library("grid")
grid.newpage()
axisVP <- viewport(width = unit(6, "inches"), height = unit(0.01, "inches"))
pushViewport(axisVP)
labs <- c(1, "", "", expression(10^{-3}), "", "", expression(10^{-6}), "", "",
   expression(10^{-9}), "", "", expression(10^{-12}))
grid.xaxis(at = seq(0, 1, length.out = 15)[-c(1,15)], label = labs)

但是,这仅将第一个刻度标记为 1。查看str(labs)它是一个长度为 13 的表达式,正如预期的那样。并且表达式被grid.xaxis. 所以我不太确定为什么只显示第一个值。我已经探讨了关于 SO 的相关问题,但大多数似乎都将单个表达式处理为轴标签或标题,而不是一系列表达式。大多数处理轴标签的问题都试图使用专门的函数来标记每个刻度。

4

1 回答 1

1

这是我要做的:

library(grid)
grid.newpage()
axisVP <- viewport(width = unit(6, "inches"), height = unit(0.01, "inches"))
pushViewport(axisVP)

## First plot an axis with all ticks and no labels
ticks_at <- seq(1/15, 14/15, length.out=13)
grid.xaxis(at = ticks_at, label=FALSE)

## Then add labels where you want them
labs <- parse(text=c("1", "10^{-3}", "10^{-6}", "10^{-9}", "10^{-12}"))
## Alternatively, use this, though in practice it's more cumbersome
# labs <- c(expression(1), expression(10^{-3}), expression(10^{-6}), 
#           expression(10^{-9}), expression(10^{-12}))
labs_at <- seq(1/15, 14/15, length.out=5)
grid.xaxis(at = labs_at, label = labs)

在此处输入图像描述

于 2015-10-14T19:25:33.300 回答