сюжет с facet_wrap

рал простой цикл for, чтобы сгенерировать серию графиков, а затем использовать grid.arrange для их построения. У меня две проблемы:

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

Я установил эстетику сюжета для группы по годам, однако это дает промежуточные .5 лет, которые появляются в легенде. Это не случилось со мной раньше.

Должны ли все быть воспроизводимы с использованиемmtcars.

library(ggplot2)
library(gridExtra)

result <- mtcars

for(i in 1:2) {
  nam <- paste("p", i, sep = "")
  assign(
    nam, ggplot(result, aes(x = disp, y = results[i+4], group = gear, color = gear)) +
      geom_line() +
      geom_point() +
      scale_colour_distiller(palette = "Dark2", direction = -1, guide = "legend") +
      scale_y_continuous(name = colnames(results[i+4])) +
      scale_x_continuous(name = "x")
  )
}


plist <- mget(paste0("p", 1:2))
do.call(grid.arrange, plist)
 Dambo05 сент. 2017 г., 17:14
Я не уверен, что вы пытаетесь достичь, но вы проверилиfacet_wrap()? Если данные поступают из того же набора данных, это может быть то, что вам нужно.

Ответы на вопрос(1)

пытаясь получить доступ к столбцам по их количеству вaes картографирование сбивает с толку ggplot. Это работает:

for(i in 1:2) {
  nam <- paste("p", i, sep = "")
  assign(
    nam, ggplot(result,aes_string(x="disp",y=colnames(result)[i+4], group="gear", color="gear")) +
      geom_line() +
      geom_point() +
      scale_colour_distiller(palette = "Dark2", direction=-1, guide="legend") +
      scale_y_continuous(name=colnames(result[i+4])) +
      scale_x_continuous(name="x")
  )
}

Я бы предложил перебирать имена; это делает код намного понятнее. Вот версия, которая делает это и пропускает обходной путь:

plots <- lapply(c("drat", "wt"), function(column) {
  ggplot(result,aes_string(x="disp",y=column, group="gear", color="gear")) +
    geom_line() + geom_point() +
    scale_colour_distiller(palette = "Dark2", direction=-1, guide="legend") +
    scale_y_continuous(name=column) +
    scale_x_continuous(name="x")}) %>% 
  do.call(grid.arrange, .)
do.call(grid.arrange, plots)

Ваш ответ на вопрос