web-dev-qa-db-ja.com

Rの複数のプロットの一般的な凡例

RとLatexを一緒に使用してプロットを描画し、それらすべての共通の凡例を作成しようとしています。

同じページに6つのプロットがあります。 Rで各プロットを個別に作成し、ラテックスの\ includegraphicsを使用して同じページに表示しました。

各グラフには同じ凡例情報があるため、各プロットに凡例を表示するのではなく、ページの下部に1つの水平凡例を表示したいと思います。残念ながら、プロットなしで凡例を作成する方法はわかりません。凡例用に別の画像を作成したら、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)

しかし、フォントが小さすぎるため、凡例ボックスの側面が切り取られています。

17
user1288578

私が話していたものの簡単な例:

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

25
joran

これを試して、

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)
5
baptiste