[英]Subscript in axis label when a line break is included?
我已經繞了這個圈。
我想要的是在[下標中的'2peak'”下面加上“(V0sub(2peak))”和“(相對氧氣消耗量的差異)”的軸標簽。 我嘗試用expression和paste / paste0替換,bquote和許多不同的組合,每當我在那里斷開鏈接時,它似乎在下標“ 2peak”之前增加了一個很大的空白。
qplot(1:10)+
labs(x="", y=expression(paste0("Difference in relative oxygen consumption\n",(V0[2][peak]))))
使用paste而不是paste0可以解決很大的空白,但是第二行是正確對齊的。
謝謝
通常不需要paste
,甚至會使事情混淆。 如果閱讀?plotmath頁面,則會看到您無法使用\\n
換行。 可以使用atop
plotmath函數:
qplot(1:10)+ labs(x="", y=expression(atop(
Difference~'in'~relative~oxygen~consumption,
"("*V0[`2peak`]*")")) )
O \\ sub2和“峰值”的意圖不明確。 一個小故障是保留了“ in”一詞,這就是為什么需要引用它的原因。 解析器無法識別帶有初始數字的令牌,這就是為什么'2peak'需要引用的原因。
我認為@BondedDust的建議是最好的,但我也針對另一個問題調整了解決方案,使其也可能起作用。 在這里,我們進行一些相當低級的grob黑客攻擊。
#helper function
library(grid)
doubleYTitle <- function(a,b) {
gTree(children=gList(
textGrob(a, gp=gpar(fontsize=13, fontface=2), y=.5, x=0,
vp=viewport(layout.pos.row=1, layout.pos.col=1), rot=90),
textGrob(b, gp=gpar(fontsize=12, fontface=1), y=.5, x=0,
vp=viewport(layout.pos.row=1, layout.pos.col=2), rot=90)
), vp=viewport(layout=grid.layout(nrow=1, ncol=2)), cl="doubleytitle")
}
widthDetails.doubleytitle <- function(x, recording=T) {
Reduce(`+`, lapply(x$children, grid:::widthDetails.text)) * 5
}
現在我們使用它
gg <- qplot(1:10)+labs(x="", y="Difference")
gb <- ggplot_build(gg)
gt <- ggplot_gtable(gb)
xx <- doubleYTitle("Difference in relative oxygen consumption",
expression((V0[2][peak])))
gt$grobs[[7]]<-xx
plot(gt)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.