首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到absoluteGrob (ggplot2)

未找到absoluteGrob (ggplot2)
EN

Stack Overflow用户
提问于 2015-04-30 15:13:33
回答 1查看 185关注 0票数 3

函数absoluteGrob {ggplot2}显示了我无法调试的行为。我已经安装了ggplot2,我可以看到?absoluteGrob的帮助页面。

然而,当我试图使用它时,R找不到它:

代码语言:javascript
复制
> absoluteGrob
Error: object 'absoluteGrob' not found

更具体地说,我尝试执行以下代码(从this answer 将一些图形绘制为x标签):

代码语言:javascript
复制
library(grid)
library(ggplot2)
library(grImport)
library(igraph)


npoints <- 3

y <- rexp(npoints)
x <- seq(npoints)

pics  <- vector(mode="list", length=npoints)
for(i in 1:npoints){
  fileps <- paste0("motif",i,".ps")
  filexml <- paste0("motif",i,".xml")

  # Postscript file
  postscript(file = fileps, fonts=c("serif", "Palatino"))
  plot(graph.ring(i), vertex.label.family="serif", edge.label.family="Palatino")
  dev.off()

  # Convert to xml accessible for symbolsGrob (my_axis)
  PostScriptTrace(fileps, filexml)
  pics[i] <- readPicture(filexml)
}


my_axis <- function () {
    function(label, x = 0.5, y = 0.5, ...) {
        absoluteGrob(
           do.call("gList", mapply(symbolsGrob, pics[label], x, y, SIMPLIFY = FALSE)),
           height = unit(1.5, "cm")
      )
    }
  }

qplot(factor(c("a", "b", "c")), 1:npoints) + scale_x_discrete(labels= my_axis())

但我知道错误是:

代码语言:javascript
复制
Error in scale$labels(breaks) : could not find function "absoluteGrob" 

欢迎任何帮助(或替代)。

ggplot2版本:

ggplot2_1.0.1

编辑

即使在简单的情况下..。

它不起作用:

代码语言:javascript
复制
library(ggplot2)
absoluteGrob

它确实:

代码语言:javascript
复制
library(ggplot2)
ggplot2:::absoluteGrob
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 15:48:48

您在帖子中链接到的答案是三年前发布的,自那时起,ggplot2中的许多内容都发生了变化。那时,ggplot2版本0.9.0还没有发布。

根据absoluteGrob的说法,它仍然是实验性的,这意味着在链接答案的时候,它确实是实验性的。此时,它可能是从ggplot2命名空间导出的,因此用户可以使用它。这就是为什么关联答案在当时起作用的原因。

但是,从1.0.1版本开始,它不会从ggplot2命名空间导出。因此,虽然您可以使用ggplot2:::absoluteGrob (它适用于非导出对象)和?absoluteGrob查看源代码和文档,但是即使通过ggplot2::absoluteGrob显式指定名称空间,也无法使用它。

根据消息来源,它只是使用gTree()调用grid包中的cl="absoluteGrob"。您可以尝试这样做,而不是直接调用absoluteGrob()。例如,尝试下面的内容,希望它能够模仿absoluteGrob()所期望的行为

代码语言:javascript
复制
grlist <- do.call("gList", mapply(symbolsGrob, pics[label], x, y, SIMPLIFY = FALSE))

gTree(children = grlist,
      cl = "absoluteGrob",
      height = unit(1.5, "cm"),
      width = NULL,
      xmin = NULL,
      ymin = NULL,
      vp = NULL)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29971450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档