如何为图例创建函数的返回值

时间:2012-03-14 22:32:20

标签: r function

我创建了一个从csv文件中绘制数据的函数。

我想从调用函数时使用的变量名称中获取图例中的标签。

使用下面的代码,names(dataPlot1)在图例中使用名称“temp1”“temp2”“temp3”。我想把它变成“x”,“y”,“z”。我怎么能这样做?

temperature <- function(temp1,temp2,temp3)
{
    dataPlot1 <- data.frame(temp1,temp2,temp3)
    matplot(dataPlot1,axes=T,frame=T,type="l",
            xlab="time (hour)",ylab="temperature(C)",
            main=names(dataPlot1))
    lines(dataPlot1[1],lty=1,col="blue")
    lines(dataPlot1[2],lty=2,col="red")
    lines(dataPlot1[3],lty=2,col="forestgreen")  
    legend("topright",names(dataPlot1),lty=c(1,2,2),
            col=c("blue","red","forestgreen"))

}
temperature(x,y,z)

2 个答案:

答案 0 :(得分:1)

也许这就是:

temperature <- function(temp1,temp2,temp3)
{ t1 <- deparse(substitute(temp1))
  t2 <- deparse(substitute(temp2))
  t3 <- deparse(substitute(temp3)) 
    dataPlot1 <- data.frame(temp1,temp2,temp3)
    matplot(dataPlot1,axes=T,frame=T,type="l",
            xlab="time (hour)",ylab="temperature(C)",
            main=names(dataPlot1))
    lines(dataPlot1[1],lty=1,col="blue")
    lines(dataPlot1[2],lty=2,col="red")
    lines(dataPlot1[3],lty=2,col="forestgreen")  
    legend("topright", c(t1,t2,t3), lty=c(1,2,2),
            col=c("blue","red","forestgreen"))

答案 1 :(得分:0)

您有几种选择:

  1. 为您的数据命名:dataPlot1 <- data.frame(x=temp1, y=temp2, z=temp3)
  2. 稍后分配名称:`colnames(dataPlot1)&lt; - c(“x”,“y”,“z”))
  3. legend=来电提供legend()参数所需的文字。
  4. 更改您的功能并添加第四个参数,例如legtxt=c("x","y","z")并将其传递给legend