簡體   English   中英

包含換行符時軸標簽中的下標?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM