2016-11-10 44 views
0

我想繪製一個數據幀,其中X軸是從說df1和y軸必須被視爲從另一個數據幀df2觀察。下面給出了示例數據幀。如何繪製使用多個數據幀與Y軸是從另一個數據幀觀測

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(ID在X軸上)和變量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 

但值不繪製。 此外,當我運行我的主代碼時,這3個變量可以變成5個變量,甚至更像a,b,c,d,e,f,我希望我的繪圖代碼自動從df2中選擇y軸,並使用df1中的對應值。 有沒有簡單的方法來繪製它。

+0

DF2 $型[1]將返回一個字符向量。所以你將不得不使用aes_string()。這是我對這個問題的第一個看法。 –

回答

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

+0

我也使用'aes_string',但值不是密謀 – mockash

+0

@ash你可以檢查類(df2 $類型)是factpr /字符?因爲我猜它肯定是個角色。 –

+0

是的,它是一個字符 – mockash