ggplot和ggdendro:编写生成树状图并将其保存到pdf文件的函数时出现的问题

ggplot和ggdendro:编写生成树状图并将其保存到pdf文件的函数时出现的问题,r,ggplot2,R,Ggplot2,我将ggplot脚本包装成一个函数,如下所示。但是,运行此命令会给我错误消息,如 xy.coords(x,y,xlabel,ylabel,log)中出错: “x”是一个列表,但没有组件“x”和“y” 没有将这些脚本包装到函数中,它们就可以正常工作。因此,如何编写这种函数,使用ggplot生成树状图并将其保存到pdf中 nicedendro<-function(inputdat, outputfile){ library(ggdendro) library(ggplot2)

我将ggplot脚本包装成一个函数,如下所示。但是,运行此命令会给我错误消息,如

xy.coords(x,y,xlabel,ylabel,log)中出错:

“x”是一个列表,但没有组件“x”和“y”

没有将这些脚本包装到函数中,它们就可以正常工作。因此,如何编写这种函数,使用ggplot生成树状图并将其保存到pdf中

nicedendro<-function(inputdat, outputfile){
    library(ggdendro)
    library(ggplot2)
    x <- read.table(inputdat,  head=TRUE)
    y <- 1-x
    d <- as.dist(y,diag=FALSE,upper=FALSE)
    hc <- hclust(d,"ave")
    dhc <- as.dendrogram(hc)
    ddata <- dendro_data(dhc,type="rectangle")
    ddata$labels$text <- gsub("\\."," ",ddata$labels$text)
    pdf(outputfile, width=30,height=35)

    plot(ggplot(segment(ddata)) + 
       geom_segment(aes(x=x0,y=y0,xend=x1,yend=y1)) + 
       xlab(NULL) + 
       ylab(NULL) + 
       scale_x_discrete(limits=ddata$labels$text) + 
       opts(panel.grid.major = theme_blank()) + 
       opts(panel.grid.minor=theme_blank()) + 
       coord_flip())


    dev.off()
}

nicedendro这是一个非常常见的问题:您必须使用
print()
才能打印图形

d <- function(){
  g1 <- qplot(...)
  print(g1)
}

d这是一个非常常见的问题:您必须使用
print()
才能打印图形

d <- function(){
  g1 <- qplot(...)
  print(g1)
}

d除了不调用print外,在ggplot对象上调用plot也有点神秘……这可能解释了OP所遇到的错误。我的印象是,对于ggplot2对象,
plot(g1)
将被分派到
print(g1)
。但我猜我错了,我得到了上面提到的错误消息。除了不调用print之外,在ggplot对象上调用plot也有点晦涩……这可能解释了OP得到的错误。我的印象是,对于ggplot2对象,
plot(g1)
将被分派到
print(g1)
。但我猜我错了,我得到了上面提到的错误消息。