У меня есть список наборов данных, datasets
. Я составил список графиков плотности, каждый график в списке относится к одному атрибуту (числовой столбец в данных), и каждый график содержит панели фасетов для каждого набора данных.
@ RonakShah показано мне, вероятно, лучший способ объединить datasets
в один, который я считаю необходимым шагом.
Работа выполняется:
iris0 <- iris
iris1 <- cbind(log(iris[,1:4]),iris[5])
iris2 <- cbind(sqrt(iris[,1:4]),iris[5])
datasets <- c("iris0","iris1","iris2")
get_binded_rows <- function(datasets) {
dplyr::bind_rows(mget(datasets, envir = .GlobalEnv), .id = "DS")
}
plots <- lapply(names(Filter(is.numeric,get(datasets[1]))), function(.x) {
ggplot(data = get_binded_rows(datasets), aes_string(x=.x)) +
geom_density(aes(fill = DS), na.rm=TRUE) +
scale_fill_manual(values = rainbow(length(datasets))) +
facet_wrap(~DS, scales="free")
})
names(plots) <- names(Filter(is.numeric,get(datasets[1])))
Любой лучший способ сделать это может также можно предложить.
Теперь проблема в том, что я раскрасил графики плотности выше по набору данных (используя fill=DS
). Я хочу вместо этого раскрасить их по атрибуту, то есть все три набора данных для Petal.Length
будут одного цвета, например красного, три набора данных - для Sepal.Width
другого цвета, например, синего, et c.