Зацикливание ggplot категориальных переменных - PullRequest
0 голосов
/ 05 декабря 2018

Я нуб, поэтому надеюсь, что это имеет смысл ...

Вопрос / постановка задачи

Мне нужно создать ряд графиков, где толькоРазница в каждом из графиков заключается в используемой группе - каждая группа содержит категориальные переменные.Я заставил это работать, вручную печатая весь код.

Вместо того, чтобы вручную записывать каждую группу в R, я хочу разработать цикл для автоматизации этого процесса печати. ​​

Текущий ручной метод

Это работает, но утомительно, и я хочу автоматизировать через цикл - просто пример с 2 из моих 9 групп.

Единственное, чтоизменения в каждом - это фактор и названия

# GOR

ggplot(aes(y = dailyCV, x = factor(GOR)), data = mergedbed) +
  geom_jitter(alpha=1/2, color="tomato", position=position_jitter(width=.2), size=1/10) +
  stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", alpha = 0.5) +
  stat_summary(fun.y=mean, colour="black", geom="text", 
               vjust=0.5, hjust=1.5, size=3, aes( label=round(..y.., digits=1))) +
  stat_summary(fun.data = give.n, geom = "text", vjust=1, hjust=-2, size=3) +
  coord_flip() +
  stat_summary(fun.y = mean, geom="point",colour="darkred", size=2) +
  xlab("GOR")+
  ylab("Co-efficient of variation (%)")+
  ggtitle("GOR vs dailyCV")

# ACCOM_EHCS

ggplot(aes(y = dailyCV, x = factor(ACCOM_EHCS)), data = mergedbed) +
  geom_jitter(alpha=1/2, color="tomato", position=position_jitter(width=.2), size=1/10) +
  stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", alpha = 0.5) +
  stat_summary(fun.y=mean, colour="black", geom="text", 
               vjust=0.5, hjust=1.5, size=3, aes( label=round(..y.., digits=1))) +
  stat_summary(fun.data = give.n, geom = "text", vjust=1, hjust=-2, size=3) +
  coord_flip() +
  stat_summary(fun.y = mean, geom="point",colour="darkred", size=2) +
  xlab("ACCOM_EHCS")+
  ylab("Co-efficient of variation (%)")+
  ggtitle("ACCOM_EHCS vs dailyCV")

Моя попытка

Моя попытка состояла в том, чтобы создать вектор с каждой из групп, а затем попытаться зациклить, но это не работает, и я уверен, что это очень неправильно.Мой первый раз при попытке создать цикл.

myvariables <- c("GOR","ACCOM_EHCS","DBL_GLAZ", "BUILDING_AGE", "HhdSize", "Inc_Group_7s", "Person_Under_5", "Person_Over_64", "thermal")

lapply(myvariables, function(cc){
  p <- ggplot(aes(y = dailyCV, x = factor(aes_string(y = cc))), data = mergedbed) +
  geom_jitter(alpha=1/2, color="tomato", position=position_jitter(width=.2), size=1/10) +
  stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", alpha = 0.5) +
  stat_summary(fun.y=mean, colour="black", geom="text", 
               vjust=0.5, hjust=1.5, size=3, aes( label=round(..y.., digits=1))) +
  stat_summary(fun.data = give.n, geom = "text", vjust=1, hjust=-2, size=3) +
  coord_flip() +
  stat_summary(fun.y = mean, geom="point",colour="darkred", size=2) +
  xlab("???")+
  ylab("Co-efficient of variation (%)")+
  ggtitle("??? vs dailyCV")
    p
})

Заранее спасибо

1 Ответ

0 голосов
/ 05 декабря 2018

Вот пример использования набора данных iris и purrr:

library(tidyverse)
data(iris)

## create a grid with variable combinations
variables <- iris %>%
  select(everything(), -Species) %>%
  names() %>%
  expand.grid(x = ., y =., stringsAsFactors = F)

##create plotting function
plot_data <- function(data, x, y){
  ggplot(data, aes_string(x, y)) +
           geom_point() +
    ggtitle(paste(x, "vs", y))
}

map2(.x = variables$x,
     .y = variables$y,
     .f = ~ plot_data(iris, .x, .y))

Это создает все переменные комбинации графиков и меняет заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...