[英]How to write a function to loop through variables and plot using ggplot
I'm having problems figuring out how to loop through variables in a data frame and plot them using ggplot.我在弄清楚如何遍历数据框中的变量并使用 ggplot 绘制它们时遇到问题。 An example of my data is below:
我的数据示例如下:
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
What I'm trying to do is to use geom_raster
to plot each pair of variables (ie, [x1,x2],[x11,x3],etc) and use the corresponding yhat as the fill
value.我想要做的是使用
geom_raster
绘制每对变量(即 [x1,x2],[x11,x3] 等)并使用相应的 yhat 作为fill
值。
For example, if I were to plot everything manually I'd do something like:例如,如果我要手动绘制所有内容,我会执行以下操作:
p<-ggplot(myData, aes(x = x1, y = x2)) + geom_raster(aes(fill = yhat))
pp<-ggplot(myData, aes(x = x11, y = x3)) + geom_raster(aes(fill = yhat1))
ppp<-ggplot(myData, aes(x = x12, y = x4)) + geom_raster(aes(fill = yhat2))
pppp<-ggplot(myData, aes(x = x21, y = x31)) + geom_raster(aes(fill = yhat3))
grid.arrange(p, pp, ppp, pppp, ncol = 2)
But I'm trying to write a function that will loop through the data frame and plot the graphs.但是我正在尝试编写一个函数来遍历数据框并绘制图形。 I tried to adapt the code from a different question here but I can't make it work for me.
我试着去适应从不同问题的代码在这里,但我不能让它为我工作。
Any suggestions as to how I would achieve this for my data?关于如何为我的数据实现这一目标的任何建议?
One way would be to split data in every 3 columns and apply the code to each list.一种方法是每 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)
data数据
Applied this on limited data of 2 rows.将此应用于 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"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.