Я создал решетчатую диаграмму рассеяния, используя xyplot, которая сгруппирована в отдельные категории. Теперь я пытаюсь создать один гексплот для каждой из категорий на графике рассеяния. Я могу жестко запрограммировать переменные, но я бы предпочел сделать это в цикле, так как я буду делать это несколько раз, что будет иметь новые категории.
Я начал с таблицы, которая выглядит следующим образом
Name Category Value1 Value2
sample1 cat1 10 1.5
sample2 cat2 10 1.5
sample3 cat3 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
sample6 cat2 10 1.5
sample7 cat3 10 1.5
Мне удалось создать список фреймов данных, используя
testing <- split(Mydata, Mydata$Category)
тогда я могу создать сюжет по
testing2 <- as.data.frame(testing[["cat1"]]) #I keep on needing to change this for each Category that I have
ggplot(testing2, aes(x = testing2[,3], y = testing2[,4])) +
geom_hex(bins = 30)
testing2 выглядит так
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
Я пытался
for(i in testing){
testing3 <- i
xtra <- ggplot(testing3, aes(x = testing3[,3], y = testing3[,4])) + geom_hex(bins = 30)
xtra
}
Это заканчивается тем, что xtra является последним фреймом данных в списке.
Может ли кто-нибудь помочь мне с этим? Я хотел бы иметь возможность создавать графики, не меняя $ Category каждый раз, так как у меня есть> 50 категорий на каждый раз, когда я хочу это сделать.
- edit1
Согласно предложению, я создал функцию;
myFirstFun <- function(column)
{
testing2 <- as.data.frame(testing[[column]])
column <- enquo(column)
ggplot(testing2, aes_string(x ="Value1", y = "Value2", group = column)) +
geom_hex(bins = 30)
}
И это;
myFirstFun("cat1")
производит это;
Name Category Value1 Value2
sample1 cat1 10 1.5
sample4 cat1 10 1.5
sample5 cat1 10 1.5
но когда я пытаюсь использовать цикл for;
for(i in categorynames){###categorynames is a vector that has all my categorynames
myFirstFun(i)
}
будет отображаться только последний график в списке.
Как бы я сделал это, чтобы получить n количество графиков (n = количество моих категорий)?
Без меня вручную делать
myFirstFun("cat1")
myFirstFun("cat2")
myFirstFun("cat3")
...