首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使ggplot2将多个数据集保存到ggplot2对象

使ggplot2将多个数据集保存到ggplot2对象
EN

Stack Overflow用户
提问于 2015-02-20 19:05:34
回答 2查看 84关注 0票数 0

我正在为一个包开发一个函数来构建一个相对复杂的ggplot2图。这个地块需要几个数据。我理解在ggplot2中这是可能的,如下面的例子所示-情节看起来很好。

当我将这样一个对ggplot2的调用包装在一个函数中,然后让该函数返回ggplot2对象(例如,g)时,问题就出现了:当我尝试打印这个对象g时,ggplot2对我说它找不到这个或那个数据。功能内部运作良好。

我的假设是,这是不起作用的,因为ggplot2只在其对象中保存了一个数据集。

这是我的测试:

代码语言:javascript
运行
复制
df1 <- data.frame(x=rnorm(10), y=rnorm(10))
df2 <- data.frame(x=rnorm(10), y=rnorm(10))
library(ggplot2)
g <- ggplot(data = df1, aes(x=x, y=y))
g <- g + geom_point()
g <- g + geom_point(data = df2, aes(x=x, y=y))
g
print(g$data)

看起来不错,但g$data只是:

代码语言:javascript
运行
复制
            x           y
1  -0.6877237 -1.04801924
2  -1.0866550  1.65779036
3  -1.7649836 -0.08788452
4  -0.6459257 -0.22692532
5   0.5649141  0.51516430
6  -0.3117237 -1.84447991
7  -0.5771836 -0.65616395
8  -0.7666694  1.44671890
9   0.1687370  0.94250971
10 -0.3278663  1.00276428

看来ggplot2放弃了另一个df。

我说得对吗?如何使ggplot2记住几个数据集?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 20:42:20

问题是你的假设是错误的。ggplot会在对象中存储绘图的所有数据,只是可能不是在您认为它会存储的地方。如果将数据放入对ggplot()的调用中,则数据将位于$data属性中。如果在一个层中指定数据,则该层将包括该数据。

在您的示例中,df1将如您所观察到的那样位于g$data,而df2将位于g$layers[[2]]$data。因此,这两个数据集都在ggplot对象中。

票数 2
EN

Stack Overflow用户

发布于 2015-02-20 19:13:55

也许这会让你成为其中的一部分。

代码语言:javascript
运行
复制
df1 <- data.frame(x=rnorm(10), y=rnorm(10))
df2 <- data.frame(x=rnorm(10), y=rnorm(10))

library(ggplot2)
g <- ggplot(data=cbind(df1, df2))
g <- g + geom_point(data = df1, aes(x=x, y=y))
g <- g + geom_point(data = df2, aes(x=x, y=y))
g

给你和以前一样的情节。

代码语言:javascript
运行
复制
str(g)

但是我们现在已经把数据变成了一个数据。

代码语言:javascript
运行
复制
List of 9
 $ data       :'data.frame':    10 obs. of  4 variables:
  ..$ x: num [1:10] 1.398 -0.379 0.486 0.813 1.057 ...
  ..$ y: num [1:10] 0.0499 -2.5607 0.2624 0.7812 0.5015 ...
  ..$ x: num [1:10] 1.283 -0.786 -0.223 -0.89 -0.103 ...
  ..$ y: num [1:10] -2.19 -0.468 -0.436 -2.502 -0.143 ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28636400

复制
相关文章

相似问题

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