为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()
行,这样您就可以看到标签被循环使用。只要把它拿走,你就可以走了。