我想迭代一个数据框并根据特定列(例如价格)绘制每一列。
到目前为止,我所做的是:
for(i in ncol(dat.train)) {
ggplot(dat.train, aes(dat.train[[,i]],price)) + geom_point()
}
我想要的是通过绘制决策变量(即价格)来首次介绍我的数据(大约300列)
我知道有一个类似的问题,但我不能真正理解为什么上面的内容并没有真正起作用。
答案 0 :(得分:1)
你可以这样做,我用mtcars数据用mpg绘制其他连续变量。你必须将数据融合成长形式(使用聚集)然后使用ggplot来绘制这些连续变量(disp,drat,qsec等)来对抗mpg。在你的情况下,而不是mpg,你会得到价格和所有其他连续变量融化(如此处的disp,drat,qsec等),其余的分类变量可以用于形状和颜色等(可选)。
library(tidyverse)
mtcars %>%
gather(-mpg, -hp, -cyl, key = "var", value = "value") %>%
ggplot(aes(x = value, y = mpg, color = hp, shape = factor(cyl))) +
geom_point() +
facet_wrap(~ var, scales = "free") +
theme_bw()
修改强>:
如果我们需要为每个变量提供单独的图表,这是另一种解决方案。
创建一个如下变量列表:lyst <- list("disp","hp")
,您可以使用colnames
函数获取所有变量名称。使用lapply来遍历数据框中的所有“lyst”对象。
setwd("path") ###set the working directory here, This is the place where all the files are saved.
pdf(file=paste0("one.pdf"))
lapply(lyst, function(i)ggplot(mtcars, aes_string(x=i, y="mpg")) + geom_point())
dev.off()
一个pdf文件。使用您设置的工作目录中的所有图形pdf生成
首先从解决方案输出: