如何编写使用ggplot遍历变量和绘图的函数

时间:2019-12-13 01:10:51

标签: r ggplot2

我在弄清楚如何在数据框中遍历变量并使用ggplot绘制变量时遇到问题。 我的数据示例如下:

head(myData,2)

          x1        x2      yhat        x11        x3    yhat1        x12
1 -0.8523122 -2.737223 -6.562228 -0.8523122 -1.450288 0.464739 -0.8523122
2 -0.5649950 -2.737223 -6.562228 -0.5649950 -1.450288 0.464739 -0.5649950
         x4     yhat2       x21       x31      yhat3
1 -1.267759 -4.624147 -2.737223 -1.450288 -0.6858007 
2 -1.267759 -4.624147 -2.267001 -1.450288 -0.6858007 

我想做的是使用geom_raster绘制每对变量(即[x1,x2],[x11,x3]等)并将相应的hat用作{{ 1}}的值。

例如,如果要手动绘制所有内容,则可以执行以下操作:

fill

但是我正在尝试编写一个将遍历数据框并绘制图形的函数。我尝试改编来自其他问题here的代码,但无法使其对我有用。

关于我将如何实现我的数据的任何建议?

1 个答案:

答案 0 :(得分:1)

一种方法是将数据每3列拆分一次并将代码应用于每个列表。

library(gridExtra)
library(tidyverse)
library(rlang)

 temp <- split.default(df, gl(ncol(myData)/3, 3)) %>%
      map(~{
      x <- syms(names(.))
      ggplot(., aes(x = !!x[[1]], y = !!x[[2]])) + geom_raster(aes(fill = !!x[[3]]))
     })
grid.arrange(grobs = temp)  

enter image description here

数据

将其应用于2行的有限数据。

myData <- structure(list(x1 = c(-0.8523122, -0.564995), x2 = c(-2.737223, 
-2.737223), yhat = c(-6.562228, -6.562228), x11 = c(-0.8523122, 
-0.564995), x3 = c(-1.450288, -1.450288), yhat1 = c(0.464739, 
0.464739), x12 = c(-0.8523122, -0.564995), x4 = c(-1.267759, 
-1.267759), yhat2 = c(-4.624147, -4.624147), x21 = c(-2.737223, 
-2.267001), x31 = c(-1.450288, -1.450288), yhat3 = c(-0.6858007, 
-0.6858007)), class = "data.frame", row.names = c("1", "2"))