2012-04-30 13 views
14

私はRとLatexを一緒に使っていくつかのプロットを描いており、すべてのプロットを共通の凡例にしようとしています。複数のプロットの一般的な凡例R

私は同じページに6つの別々のプロットを持っています。私はそれぞれのプロットをRで別々に作り、ラテックスの\ includegraphicsを使って同じページに表示しました。

各グラフには同じ凡例情報がありますので、各プロットに凡例を表示するのではなく、ページの下部に1つの水平凡例を表示したいと考えています。残念ながら、私はプロットなしで伝説を作る方法を理解できません。凡例のために別のイメージを取得したら、それをラテックスを使ってページの最下部に含める方法を知ります。

私は伝説を作るために使用しようとしていますコードは、フォントが小さすぎると、凡例ボックスの側が遮断され、

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

'layout'を使ってそれらをRで1つのプロットにまとめます。 – 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

は、フォントサイズとデバイスの幅によって異なります。 'lattice'が生成できる伝説を見たいと思うかもしれません、それらは異なったキーを間隔をあけて少し賢いかもしれません。 ( 'gridBase'を使って凡例をベースプロットに追加する必要があります)。 – baptiste

22

簡単な例、これを試してみてください:すべてのプロットは、ベースRの機能を使用する場合、あなたは簡単に時間を持っているかもしれ

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

関連する問題