我正在尝试创建一个绘图,其中轴值是类别名称,名称用斜体显示,其后是一些文本和括号内的数字。每个轴值的类别名称和编号都不同。例如,我将拥有“狗(宠物1)”,“猫(宠物2)”。我查看了许多其他示例来为轴的标签执行此操作,但没有查看的label参数axis
。我有点卡住...
par(mar=c(5,8,1,1))
plot(NA, xlim=c(0,5), ylim=c(1,5), ylab="", xlab="", axes=F)
axis(1)
pet <- c("Dog", "Cat", "Goldfish", "Dog", "Rabbit")
number <- 1:5
formatted <- paste("italic(", pet, ")~(Pet ", number, ")", sep="")
axis(2, labels=sapply(formatted, as.expression), at=1:5, las=2)
我希望能早点结束,因为生成的图的mathplot
语法在正确的位置(例如italic(Dog)~(Pet 1)
),但是无法正确显示。
当我不sapply
打电话时,它抱怨标签数量和at值之间不匹配。
当我这样做时,axis(2, labels=parse(text=formatted), at=1:5, las=2)
我得到
Error in parse(text = formatted) :
<text>:1:18: unexpected numeric constant
1: italic(Dog)~(Pet 1
^
有什么建议吗?
更改formatted
为列表并使用bquote
。然后,您可以评估上的表达式列表do.call
。
par(mar=c(5,8,1,1))
plot(NA, xlim=c(0,5), ylim=c(1,5), ylab="", xlab="", axes=F)
axis(1)
pet <- c("Dog", "Cat", "Goldfish", "Dog", "Rabbit")
number <- 1:5
formatted <- lapply(1:5, function(i) bquote(paste(italic(.(pet[i]))~"(Pet", .(number[i]), ")", sep="")))
axis(2, labels=do.call(expression, formatted), at=1:5, las=2)
另一个问题可能是您不需要italic
粘贴内表达式函数调用()周围的引号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句