2013-03-18 188 views
4

我生成以下傳說:在R的情節傳說中有小節?

legend(
    "bottomleft" 
    , legend=c(
    expression(bold("Long:" ~ (w==10^2 ~ ";" ~ h==10^5))) 
    , expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
    , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
    , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.40 ~ ";" ~ beta == 10) 
    , expression(bold("Wide:" ~ (w==10^3 ~ ";" ~ h==10^3))) 
    , expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
    , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
    , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.40 ~ ";" ~ beta == 10) 
) 
    , col=c("n", 1, 2, 3, 4, 5, -1, 1, 2, 3, 4, 5) 
    , lty=c(F, 1, 1, 1, 1, 1, -1, 2, 2, 2, 2, 2) 
    , cex=.65 
) 

這給了我:

enter image description here

這將是更好的有一個標題,也跨越了「行+點」樣本區域:

enter image description here

我該如何認識到這一點? (例如,我嘗試在第1節中設置nFALSE,但那不起作用,...)。 我也未能與對齊qcbeta - 值,但是那是一個不同的故事,...

+0

我懷疑這可能只有'legend'的參數。 PLOTMATH特別忽略ascii控制代碼,所以使用退格策略是不可能的。我會考慮使用'幻影()'「保留」空間,然後寫入這些位置。我會支持將這些位置附加到圖例的輸出,然後恢復它們以用作「text」的參數。 – 2013-03-18 19:20:31

回答

3

一種類似的方法,但是使用legend標題,以及將所述矩形之前創建兩個圖例(沒有框)(盒)之後

plot(1) 
# legend 1 
l1 <- legend(
    "topleft" 
    , legend=c(expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
    , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
    , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.40 ~ ";" ~ beta == 10)), 
    title = expression(bold("Long:" ~ (w==10^2 ~ ";" ~ h==10^5))), 
    , col=c(1, 2, 3, 4, 5) 
    , lty=c(1, 1, 1, 1, 1) 
    , cex=.65, 
    bty='n') 
# legend 2, placed directly below legend 1 
l2 <- legend(x = l1$rect$left, y = with(l1$rect, top - h), 
      legend =c(expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
         , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
         , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
         , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
         , expression(q[c] == 0.40 ~ ";" ~ beta == 10)), 
      title = expression(bold("Wide:" ~ (w==10^3 ~ ";" ~ h==10^3))), 
       col=c(1, 2, 3, 4, 5) 
      , lty=c( 2, 2, 2, 2, 2) 
      , cex=.65, 
      bty='n') 
# add the rectangle around the legend 
rect(xleft = l1$rect$left, ybottom = with(l2$rect, top - h), 
    xright = l1$rect$left + max(l1$rect$w, l1$rect$w), ytop = l1$rect$top) 

enter image description here

+1

您必須使用例如當在一個loglog-plot(即'10 ^(l1 $ rect $ left)')上工作時,'l1 $ rect $ left'作爲指數。 – 2013-03-19 06:15:13

5

使用@DWin的建議的解決方案的方法:

設置的示例圖:

plot(1:10,type="n") 

保存的傳說和phantom隱藏標題,以手工編寫

saveleg <- legend(
    "bottomleft" 
    , legend=c(
     expression(phantom(bold("Long:" ~ (w==10^2 ~ ";" ~ h==10^5)))) 
    , expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
    , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
    , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.40 ~ ";" ~ beta == 10) 
    , expression(phantom(bold("Wide:" ~ (w==10^3 ~ ";" ~ h==10^3)))) 
    , expression(q[c] == 0.00 ~ ";" ~ beta == 0) 
    , expression(q[c] == 0.05 ~ ";" ~ beta == 2) 
    , expression(q[c] == 0.10 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.20 ~ ";" ~ beta == 10) 
    , expression(q[c] == 0.40 ~ ";" ~ beta == 10) 
) 
    , col=c("n", 1, 2, 3, 4, 5, -1, 1, 2, 3, 4, 5) 
    , lty=c(F, 1, 1, 1, 1, 1, -1, 2, 2, 2, 2, 2) 
    , cex=.65 
    , trace=TRUE 
) 

然後抓取text兩個位的y軸值,使用新指定的x軸值從保存的圖例中重新繪製。

text(
    c(0.6,0.6), 
    saveleg$text$y[c(1,7)], 
    c(
     expression(bold("Long:" ~ (w==10^2 ~ ";" ~ h==10^5))), 
     expression(bold("Wide:" ~ (w==10^3 ~ ";" ~ h==10^3))) 
    ), 
    cex=0.65, 
    pos=4 
) 

結果:

enter image description here