为R中的多个图形创建图例

为R中的多个图形创建图例,r,R,我编写了一些代码,从文本文件中读取一些数据,将其转换为矩阵,并将矩阵的每一列绘制在单独的图形中: #Read data from txt file into table and convert table into matrix excMatrix = as.matrix(read.table("/Users/Kane/Desktop/Gujarati/Table 1.3.txt", header = TRUE, row.names = 1)) #Plotting function excPl

我编写了一些代码,从文本文件中读取一些数据,将其转换为矩阵,并将矩阵的每一列绘制在单独的图形中:

#Read data from txt file into table and convert table into matrix
excMatrix = as.matrix(read.table("/Users/Kane/Desktop/Gujarati/Table 1.3.txt", header = TRUE, row.names = 1))

#Plotting function
excPlot = function(x) {
  plot(row.names(excMatrix),x,xlab = "Year", ylab = "Exchange rate (US)", type = "l")
  legend("topright", legend = "something to get column names for legend", pch = 1, col = 1:2, bty = "n")
}

#Plot exchange rates from various countries on seperate graphs
apply(excMatrix, 2, excPlot)
当我运行此程序时,它会生成正确的图形,但我无法确定如何在图例中获取国家名称,即每个图形都是一个单独国家的数据,该国家的名称是矩阵的列


希望这是有意义的,感谢您的帮助。

重新安排绘图方法,使其在矩阵的
colnames
上循环,这样就可以工作了。例如:

par(mfrow=c(2,2))

excMatrix <- matrix(1:20,ncol=4,dimnames=list(1:5,letters[1:4]))

excPlot = function(x) {
  plot(row.names(excMatrix),excMatrix[,x],xlab = "Year", 
       ylab = "Exchange rate (US)", type = "l")
  legend("topright", 
         legend = x, 
         pch = 1, col = 1:2, bty = "n")
}

lapply(colnames(excMatrix), excPlot)
par(mfrow=c(2,2))

我建议使用@thelatemail所指出的
par()
。签出
?par
。它有许多参数,例如边距和大小,供您使用

如果每个绘图的图例相同,则可以将
legend()
代码放置在
excPlot
函数的外部

看看这篇关于stackoverflow的帖子:


谢谢,但实际上我需要在单独的图形上绘制所有的绘图,这就是为什么我这样设置的原因。但是我很确定我仍然可以用这个。@Kane-没问题。我刚刚在这个示例代码中包含了
par()
行,这样您就可以看到标签被循环使用。只要把它拿走,你就可以走了。