2013-05-04 23 views
1

我一直在試圖添加一個標題(通過main)到spplot創建的地圖,該圖由兩行文本組成,但是第二行行斜體。每行中的文本都是從一個變量名稱中提取的。我已經嘗試過使用bquote和表情,但沒有運氣。如何在R中使用新行,斜體和變量名創建格子圖標題

我的出發點的基本示例如下,儘管在我的實際使用中,a和b的文本是作爲循環的一部分從矢量迭代繪製的。關於如何保持兩條線按照示例分割的任何建議,但是第二行斜體文本將非常感謝。我希望這個例子很清楚。提前致謝。

require(sp) 
data(meuse) 
coordinates(meuse)<-~x+y 

a<-"line 1" 
b<-"line 2" 
title<-paste(a,'\n',b,sep="") 

spplot(meuse,c("ffreq"),col.regions="black",main=title) 

回答

1
spplot(meuse, c("ffreq"), col.regions="black", 
       main= expression(atop(line~1, italic(line~2))) ) 

如果你真的想要隔離一個= 「1號線」 和b = 「2號線」 變量 「通過他們的」,你可以用這種形式:

spplot(meuse, c("ffreq"), col.regions="black", 
      main= as.expression(bquote(atop(.(a), italic(.(b)))))) 

我會注意到bquote()返回的值實際上並不是一個表達式,而是一個「語言」對象。格雷格的作者,Deepayan Sarkar認爲,這些不應被視爲格子框架中的表達。在沒有as.expression包裝的情況下使用bquote通常可以在基本圖形和ggplot2中使用,但在格子調用中會失敗。我最初(失敗)嘗試:

spplot(meuse, c("ffreq"), col.regions="black", 
      main= bquote(atop(.(a), italic(.(b))))) 
+0

非常感謝。其中第二個爲我工作 - 我曾嘗試過第一個和最後一個。如果我錯了,請糾正我,但當要包含的文本是變量名時,第一個解決方案似乎不起作用。 – nickb 2013-05-04 04:20:02

+0

這是正確的。看起來像'expression()'內的變量名稱的文本不會被評估。 'as.expression'參數會被評估,然後返回模式'表達式' – 2013-05-04 05:17:11

相關問題