【问题标题】:Save hexbinplot to object将 hexbinplot 保存到对象
【发布时间】:2018-02-06 16:29:22
【问题描述】:

有没有办法将十六进制数据图分配给对象?

library(hexbin)
myData <- hexbin(rnorm(100),rnorm(100), xbins=50) 
myPlot <- plot(myData)

我希望显示情节被抑制并且对象myPlot 包含它。 但是,调用myPlot 只会打印出一个列表。

【问题讨论】:

  • 你使用的hexbin函数从何而来?您应该明确列出您正在使用的任何非基础 R 包。如果不打印,您打算如何处理该对象?
  • class(myPlot) 返回什么?将对象类实现为类list 的对象是很常见的。 (对其进行子分类。)
  • 假设那是 hexbin 包,它是如何使用网格的问题。让它在 ggplot 中工作更简单:ggplot(data.frame(x = rnorm(100), y = rnorm(100)), aes(x, y)) + geom_hex(bins = 50) 不过,你需要更多的数据才能让它看起来很多;试试rnorm(5000) 左右。

标签: r ggplot2 graphics lattice


【解决方案1】:

那是因为调用myPlot 只是调用print.list(myPlot) 因为plot(myData) 只是返回一个列表。这适用于 lattice 和 ggplot2 的唯一原因是它们为从 plot() 方法返回的对象定义了 print() 方法。

我认为存储myData 对象并在需要生成绘图时调用plot() 没有任何本质上的错误。是否存在需要自动打印提供的特定功能的用例?

如果你想有网格对象形式的输出,可以尝试使用grid::grid.grab()

myData <- hexbin(rnorm(100),rnorm(100)) 
plot(myData)
grobs <- grid::grid.grab()
str(grobs)

[1] "gTree" "grob"  "gDesc"

【讨论】:

  • 非常感谢您的快速回复。我的用例是调用grid.edit 来修改情节的元素。这就是为什么我最初想禁止输出并且仅在编辑某些元素后才将其打印出来。
  • 谢谢,这正是我要找的。有没有办法然后编辑“gTree”的孩子来修改图形的一部分?
  • 是的,这就是对象的重点。查看grid::editGrob()的文档
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 2011-01-11
  • 2014-08-30
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
相关资源
最近更新 更多