2012-04-30 54 views
14

我一起使用R和Latex繪製一些圖並試圖爲它們製作一個共同的圖例。R中多個圖的常見圖例

我在同一頁上有六個單獨的圖。我在R中分別製作了每個繪圖,然後使用Latex中的\ includegraphics將它們顯示在同一頁上。

每張圖都有相同的圖例信息,因此我們不希望每個圖中都有一個圖例,我希望在頁面底部顯示一個水平圖例。不幸的是,我無法弄清楚如何在沒有情節的情況下製作傳奇。一旦我爲這個圖例創建了一個單獨的圖像,我將知道如何使用Latex將它包含在頁面的底部。

我試圖使用,使傳說中的代碼是

plot(1, type = "n", axes=FALSE, xlab="", ylab="") 
plot_colors <- c("blue","black", "green", "orange", "pink") 

legend(.6,1.3,legend = c("Fabricated Metal", "Iron and Steel", "Paper", 
"Beverages", "Tobacco"), 
     col=plot_colors, lwd=5, cex=.5, horiz = TRUE) 

但是,字體太小,傳說盒子的側面被切斷。

+0

如果所有的地塊使用基礎R功能,你可以有一個更簡單的時間使用'layout'將它們全部放入R中的一個圖中。 – joran

回答

5

試試這個,

plot_colors <- c("blue","black", "green", "orange", "pink") 
text <- c("Fabricated Metal", "Iron and Steel", "Paper", 
"Beverages", "Tobacco") 
plot.new() 
par(xpd=TRUE) 
legend("center",legend = text, text.width = max(sapply(text, strwidth)), 
     col=plot_colors, lwd=5, cex=1, horiz = TRUE) 
par(xpd=FALSE) 
+0

上面的代碼會創建一個太大的圖例 - 您只能看到它的中心,並且兩邊被切斷。即使當我輸出文件並重新打開時,我也沒有完整的圖例。 – user1288578

+0

這將取決於您的字體大小和設備寬度。你可能想看看'晶格'可以產生的傳說,它們在分隔不同的鍵時可能會更聰明一些。 (你需要使用'gridBase'來添加圖例中的圖例)。 – baptiste

22

什麼,我說的是一個簡單的例子:

m <- matrix(c(1,2,3,4,5,6,7,7,7),nrow = 3,ncol = 3,byrow = TRUE) 

layout(mat = m,heights = c(0.4,0.4,0.2)) 

for (i in 1:6){ 
    par(mar = c(2,2,1,1)) 
    plot(runif(5),runif(5),xlab = "",ylab = "") 
} 


plot(1, type = "n", axes=FALSE, xlab="", ylab="") 
plot_colors <- c("blue","black", "green", "orange", "pink") 
legend(x = "top",inset = 0, 
     legend = c("Fabricated Metal", "Iron and Steel", "Paper","Beverages", "Tobacco"), 
     col=plot_colors, lwd=5, cex=.5, horiz = TRUE) 

enter image description here

+2

您可能需要添加'par(mar = c(0,0,0,0))',或者在添加圖例之前重置邊距 – MichaelChirico