Номер графика R c Переменная в зависимости от дней недели - PullRequest
0 голосов
/ 29 мая 2020

У меня есть фрейм данных с двумя столбцами, Global Active Power - это числовой c столбец, а DateTime - это столбец типа datetime. Когда я выполняю команду plot (DateTime, Global Active Power), я автоматически получаю дни недели в виде отметок на оси x.
1. Может кто-нибудь объяснить, как это происходит?
2. Также, когда Я запускаю график (as.factor (дни недели (DateTime)), Global Active Power), я не получаю тот же график, вместо этого я получаю коробчатый график.

Global Active Power vs Day of Week

1 Ответ

2 голосов
/ 29 мая 2020

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

Поскольку ваш пример не включал никаких данных, мне пришлось создать фиктивные данные, чтобы показать, как это работает:

set.seed(69)
x  <- (as.POSIXct("2020-05-29 10:30:00") + 1:(24 * 60) * 300)[1:1000]
y  <- rpois(1000, 50 * sin(seq(0, 12, length.out = 1000))^2) / 10
df <- data.frame(DateTime = x, `Global Active Power` = y)

Итак построив эти данные, мы получим макет, аналогичный графику в вашем вопросе:

plot(df$DateTime, df$Global.Active.Power, type ="l", xlab ="Date", ylab ="Power")

Теперь, если я хочу отформатировать, скажем, дату, тогда я будет рисовать график без оси x, а затем добавить отформатированную ось следующим образом:

plot(df$DateTime, df$Global.Active.Power, 
     type = "l", xaxt = "n", xlab = "Date", ylab = "Power")

axis.POSIXct(1, df$DateTime, format = "%d %b")

Что касается того, почему ваш график изменяется на коробчатую диаграмму, когда вы меняете ось x на факторная переменная, соответствующая дню недели, вы преобразовали свою временную переменную из непрерывной в дискретную. В ваших данных только два дня недели, поэтому у вас будет только две точки на оси x, где могут отображаться данные. R выбирает здесь коробчатую диаграмму, потому что в противном случае ваш график был бы просто беспорядком, как вы можете видеть, если я изменю дату и время только на даты:

plot(as.Date(df$DateTime),df$Global.Active.Power)

enter image description here

Создано 29.05.2020 с помощью пакета . (v0.3.0)

...