【发布时间】:2015-02-21 04:42:20
【问题描述】:
我正在为一个包开发一个函数来构建一个相对复杂的ggplot2 图。
此图需要 几个 数据框。
我知道ggplot2 可以做到这一点,如下例所示——情节看起来不错。
当我将这样一个对 ggplot2 的调用包装在一个函数中,然后让该函数返回 ggplot2 对象(例如,g)时,问题就出现了:当我尝试打印这个对象 g 时,ggplot2 大喊我说它找不到这个或那个数据。
在函数内部工作正常。
我的假设是这不起作用,因为 ggplot2 在其对象中仅保存 一个 数据集。
这是我的测试:
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 只是:
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 记住几个数据集?
【问题讨论】:
-
这大概是因为在第 1 行的初始
ggplot函数中,您只有一个数据帧。 df2 仅添加在geom_point() -
太好了,非常感谢@MrFlick——这解决了我的问题。如果你把它作为答案,我会接受它。