绘图表达式向量的替代方法
Alternative to Vector of Plotmath Expressions
我试图在每 3 个刻度处用 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 上探索过相关问题,但大多数问题似乎都将单个表达式作为轴标签或标题处理,而不是一系列表达式。大多数与轴标签有关的问题都试图使用专门的函数来标记每个刻度。
我会这样做:
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)
我试图在每 3 个刻度处用 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 上探索过相关问题,但大多数问题似乎都将单个表达式作为轴标签或标题处理,而不是一系列表达式。大多数与轴标签有关的问题都试图使用专门的函数来标记每个刻度。
我会这样做:
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)