我正在尝试使用for循环为数据帧中的每一列创建一个ggplot。我对此很陌生,所以我的方法在这里可能是非常错误的。
我已经编写了创建ggplot的函数:
create_scatter <- function(df, x, y) {
ggplot(df, aes(x, y)) +
geom_point() +
xlab(name) +
ylab("quality")
}
还有一个for循环,通过名称循环遍历Dataframe列(以获取列的名称以供以后使用),然后获取列的内容以用于绘图功能。
for (name in names(whiteWines)) {
for (column in whiteWines[name]) {
assign(paste0(name, "_scatter"),
create_scatter(whiteWines, column, whiteWines$quality))
}
}
使用assign()
可以即时从列名创建变量名,并将ggplot的结果分配给它。
然后我使用grid.arrange将结果图布置在3 x 4的网格中。
grid.arrange(fixed.acidity_scatter,
volatile.acidity_scatter,
citric.acid_scatter,
residual.sugar_scatter,
chlorides_scatter,
free.sulfur.dioxide_scatter,
total.sulfur.dioxide_scatter,
density_scatter,
pH_scatter,
sulphates_scatter,
alcohol_scatter,
layout_matrix = rbind(c(1,2,3), c(4,5,6), c(7,8,9), c(10,11,12)))
执行后,将创建所有散点图,但是它们都包含循环中最后一个散点图的数据。
如果我将分配语句包装在print()
语句中,那么我确实会在网格中获得所需的结果,但是每个单独的图也会被打印出来。
答案 0 :(得分:0)
您可能正在寻找更多类似这样的东西:
library(readr)
library(tidyr)
library(dplyr)
library(ggplot2)
ww <- read_delim(file = "~/Downloads/winequality-white.csv",delim = ";")
ww_long <- ww %>%
gather(key = measure,value = value,`fixed acidity`:`alcohol`)
ggplot(data = ww_long,aes(x = quality,y = value)) +
facet_wrap(~measure,scales = "free_y") +
geom_point()
R有一些对于初学者来说很诱人的工具,他们可以通过解决问题来思考。其中有assign()
,get()
和eval(parse(text = ))
。通常情况下,使用这些解决方案将导致比解决的问题更多的问题;通常,这是一种更好的方法,但需要深入研究R中的“正常”工作方式。
答案 1 :(得分:0)
以下是数据的变量 “固定酸度”;“挥发性酸度”;“柠檬酸”;“残糖”;“氯化物”;“游离二氧化硫”;“总二氧化硫”;“密度”;“ pH”;“硫酸盐”;“酒精” “;”质量“
以下是示例行
7; 0.27; 0.36; 20.7; 0.045; 45; 170; 1.001; 3; 0.45; 8.8; 6
6.3; 0.3; 0.34; 1.6; 0.049; 14; 132; 0.994; 3.3; 0.49; 9.5; 6
8.1; 0.28; 0.4; 6.9; 0.05; 30; 97; 0.9951; 3.26; 0.44; 10.1; 6
7.2; 0.23; 0.32; 8.5; 0.058; 47; 186; 0.9956; 3.19; 0.4; 9.9; 6
7.2; 0.23; 0.32; 8.5; 0.058; 47; 186; 0.9956; 3.19; 0.4; 9.9; 6
8.1; 0.28; 0.4; 6.9; 0.05; 30; 97; 0.9951; 3.26; 0.44; 10.1; 6
6.2; 0.32; 0.16; 7; 0.045; 30; 136; 0.9949; 3.18; 0.47; 9.6; 6
7; 0.27; 0.36; 20.7; 0.045; 45; 170; 1.001; 3; 0.45; 8.8; 6
6.3; 0.3; 0.34; 1.6; 0.049; 14; 132; 0.994; 3.3; 0.49; 9.5; 6
8.1; 0.22; 0.43; 1.5; 0.044; 28; 129; 0.9938; 3.22; 0.45; 11; 6
全部形成excel表格。