是否有可能获得转换后的绘图数据? (例如点图中的点坐标,密度曲线)

时间:2012-08-31 15:31:02

标签: r ggplot2

我想知道是否有可能在ggplot2图表中获取转换后的数据?特别是,我有兴趣获得点图中点的坐标和大小,以便在另一个绘图库(d3.js)中使用它们。我该如何提取这些信息?

这是情节:

g=ggplot(data.frame(x=rnorm(100)), aes(x = x)) + geom_dotplot()

现在我可以使用g$data获取原始数据,但我想要转换的数据(图中点的坐标)。

谢谢!

1 个答案:

答案 0 :(得分:9)

使用ggplot_build然后提取数据。试试这个:

gg <- ggplot_build(g)

结果对象是一个列表,第一个元素包含您所追求的数据:

str(gg, max.level=1)
List of 3
 $ data :List of 1
 $ panel:List of 5
  ..- attr(*, "class")= chr "panel"
 $ plot :List of 8
  ..- attr(*, "class")= chr "ggplot"

这就是它的样子:

head(gg$data[[1]])
  y         x  binwidth count ncount     width PANEL group countidx stackpos      xmin      xmax ymin ymax
1 0 -2.070496 0.1356025     1  0.125 0.1356025     1     1        1      0.5 -2.138297 -2.002695    0    1
2 0 -1.781799 0.1356025     2  0.250 0.1356025     1     1        1      0.5 -1.849600 -1.713998    0    1
3 0 -1.781799 0.1356025     2  0.250 0.1356025     1     1        2      1.5 -1.849600 -1.713998    0    1
4 0 -1.619960 0.1356025     1  0.125 0.1356025     1     1        1      0.5 -1.687761 -1.552159    0    1
5 0 -1.403223 0.1356025     6  0.750 0.1356025     1     1        1      0.5 -1.471024 -1.335422    0    1
6 0 -1.403223 0.1356025     6  0.750 0.1356025     1     1        2      1.5 -1.471024 -1.335422    0    1

PS。 AFAIK,此功能仅在ggplot2版本0.9.0

中可用