如何使用多个数据框进行绘图,其中Y轴是来自另一个数据帧的观测

时间:2016-11-10 05:45:00

标签: r ggplot2

我正在尝试绘制一个数据帧,其中X轴来自df1,而y轴必须被视为来自另一个数据帧df2的观察。下面给出的样本数据框。

df1
id    a    b    c
id1   1.5  1.3  2.1
id2   2.4  1.8  1.6
id3   1.5  1.9  2.3
...
...

df2
list    type    parm
1        a       xm
2        b       gh
3        c       tr

从上面的示例数据框中,我正在绘制df1(X轴上的ID),并为变量a,b,c绘制单独的图,如下所示。

p1 <- ggplot(df1, aes(x = id, y = a)) + geom_boxplot(outlier.shape = NA)
p1
p2 <- ggplot(df1, aes(x = id, y = b)) + geom_boxplot(outlier.shape = NA)
p2
p3 <- ggplot(df1, aes(x = id, y = c)) + geom_boxplot(outlier.shape = NA)
p3
grid.arrange(p1,p2,p3,ncol = 1)

我的问题是,有没有办法将y轴作为df2的输入,因为df1中的变量a,b,c是df2中类型列中的观察值。

我厌倦了如下所示

p1 <- ggplot(df1, aes(x = id, y = df2$type[1])) + geom_boxplot(outlier.shape = NA)
p1

但是没有绘制数值。 当我运行我的主代码并且我希望我的绘图代码能够自动从df2中选择y轴及其在df1中的相应值时,这3个变量可以变成5个变量,甚至更像a,b,c,d,e,f。 有没有一种简单的方法来绘制它。

1 个答案:

答案 0 :(得分:0)

df1 = data.frame( id = c("id1", "id2", "id3"), a= 1:3, b = 3:5, c = 4:6)
df2 = data.frame(type = letters[1:3], parm = letters[11:13])
df2$type <- as.character(df2$type)

library(ggplot2)
p1 <- ggplot(df1, aes_string(x = "id", y = df2$type[1])) + geom_boxplot(outlier.shape = NA)
p1

output from above code