Добавление основных заголовков из списка в графики для цикла for - PullRequest
0 голосов
/ 11 декабря 2018

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

library(ggplot2)

concentrations = data.frame(
  datehour = c("2017-02-15 09:00:00", "2017-02-15 10:00:00","2017-02-15 
               11:00:00", "2017-02-16 09:00:00", "2017-02-16 10:00:00", 
               "2017-02-16 11:00:00"),
  Number = c(3000, 4000, 2000, 6000, 7000, 5000),
  Hour = c(9, 10, 11, 9, 10, 11))

winddir = data.frame(
  Date = c("2017-02-15", "2017-02-16"),
  Wind = c("S", "SW"))

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

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

Я могу нормально использовать список дат, но я не знаю, как получить направление ветра для основного заголовка.

Я попытался начать с c = 1, а затем добавить каждый цикл 1 дополнительно к c и использовать его для получения элементов из списка wind_list с paste(wind_list[c]).Это возвращает заголовок с номером c (т. Е. «Ветер: 1», «Ветер: 2» и т. Д.) Вместо направления ветра.

#creating the lists
wind_list <- as.list(winddir$Wind)
date_list <- as.list(winddir$Date)

#function for plotting graph
plotdays <- function(){
  ggplot() +
    geom_line(data = concTemp, aes(x = Hour, y = Number))+
                ylab("UFP concentration") + xlab("Hour") + 
    ggtitle(paste("Average UFP concentration per hour on", paste(i),
                  "     Wind:", paste(wind_list[c])))
} 

#the for loop for creating the graphs in 1 PDF

pdf("Test.pdf", onefile = TRUE)
c = 1

for (i in date_list){
  concTemp <- subset(concentrations, grepl(i, datehour))
  if (c == 1){
    wind <-  wind_list[c]
    plotD <- plotdays()
    print(plotD)
    c = c+1
  } else {
    wind <-  wind_list[c]
    plotD <- plotdays()
    print(plotD)
    break
  }
}

dev.off()

Есть предложения?

1 Ответ

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

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

#creating the lists
wind_list <- as.list(as.character(winddir$Wind))
date_list <- as.list(as.character(winddir$Date))

Результат: enter image description here

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