使用par()和text()将文本添加到空图表

时间:2012-07-24 08:03:28

标签: r

我希望有一个小函数显示给定数据集中每个数字变量的基本数据统计信息。到目前为止,我有以下内容:

AnalyzeNumericData <- function(x,GroupVar=NA) {

VarList <- names(x)  
NumVars <- length(VarList)  

for (i in (1:NumVars)) {
     if (is.numeric(x[,VarList[i]])) {
       par(mfrow=c(2,2))
         hist(x[,VarList[i]],main=paste("Histogram of ",VarList[i]),xlab=NA)
         boxplot(x[,VarList[i]],main=paste("Boxplot of ",VarList[i]))
      if (!is.na(GroupVar)) {
        boxplot(x[,VarList[i]]~x[,GroupVar],main=paste("Boxplot of ",VarList[i]," by ", GroupVar))
      }   
        # Add some text to bottom right
        # I've tried plot(1)
        # and then text(1,"MyText"), but this only alows me to put text on one place (in the middle of the plot)
    }
  }
}

AnalyzeNumericData(mtcars,"cyl")

该函数将为每个数字变量创建三个图表。我想在右下角区域添加一些文本而不是第四个图表。我知道text(),但是为了使用它,我必须首先创建类似空图表的东西。

任何想法都赞赏。

2 个答案:

答案 0 :(得分:1)

通过调用plot(..., type="n")

获得一个空的情节区域
plot(1:100, type="n", xaxt="n", yaxt="n", bty="n", xlab="", ylab="")
text(x=10, y=10, "foobar")

也许你想调整情节的不同边距。因此,您也可以使用par(例如par("mar") <- c(0, 0, 0, 0),有关详细信息,请参阅?par。)

答案 1 :(得分:1)

AnalyzeNumericData <- function(x,GroupVar=NA) {
    VarList <- names(x)
    NumVars <- length(VarList)

    for (i in 1) {
        if (is.numeric(x[,VarList[i]])) {
            par(mfrow=c(2,2))
            hist(x[,VarList[i]],main=paste("Histogram of ",VarList[i]),xlab=NA)
            boxplot(x[,VarList[i]],main=paste("Boxplot of ",VarList[i]))
            if (!is.na(GroupVar)) {
                boxplot(x[,VarList[i]]~x[,GroupVar],main=paste("Boxplot of ",VarList[i]," by ", GroupVar))
            }
            plot(NA,NA,axes=F,xlim=c(0,10),ylim=c(0,10),xlab="",ylab="")
            text(5,5,labels="MyText")
        }
    }
}

AnalyzeNumericData(mtcars,"cyl")

您可以更改x的{​​{1}}和y,根据text(x,y,labels="MyText")xlim调整文字的位置。