Как я могу построить временной ряд, который показывает только дни на оси X?

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

Линейный участок

Мой набор данных - это временной ряд, который включает дни, часы и минуты. Я хочу, чтобы сюжет показывал только день недели. Когда я использую нормальный plot(x,y) я получаю box plot и я не могу выяснить тип этого сюжета. Может ли кто-нибудь помочь мне разобраться в сюжете и какую функцию можно использовать, чтобы получить такой сюжет.

Руководитель фактических данных:

head(data)
#        Date     Time Global_active_power Global_reactive_power Voltage
#1 2006-12-16 17:24:00               4.216                 0.418  234.84
#2 2006-12-16 17:25:00               5.360                 0.436  233.63
#3 2006-12-16 17:26:00               5.374                 0.498  233.29
#4 2006-12-16 17:27:00               5.388                 0.502  233.74
#5 2006-12-16 17:28:00               3.666                 0.528  235.68
#6 2006-12-16 17:29:00               3.520                 0.522  235.02

#  Global_intensity Sub_metering_1 Sub_metering_2 Sub_metering_3
#1             18.4              0              1             17
#2             23.0              0              1             16
#3             23.0              0              2             17
#4             23.0              0              1             17
#5             15.8              0              1             17
#6             15.0              0              2             17

Минимально воспроизводимый набор данных:

set.seed(123)
data <- data.frame(Date = as.Date(rep(c("2006-06-16", "2006-06-17"), each = 1440)),
  Time = format(as.difftime(0:1439, units = "mins") + as.POSIXct("2006-06-16"), "%H:%M"),
  Global_active_power = cumsum(rnorm(2880, 0.02, 0.02) * rep(rep(c(1, -1), 4), 2880 / 8)))

На этом этапе я попробовал следующее:

x <- weekdays(data$Date)
y <- data$Global_active_power

plot(x, y)

но я получаю коробку.

1 ответ

Решение

Может быть, это то, что вы хотите:

set.seed(123)
data <- data.frame(Date = as.Date(rep(c("2006-06-16", "2006-06-17"), each = 1440)),
                   Time = format(as.difftime(0:1439, units = "mins") + 
                                 as.POSIXct("2006-06-16"), "%H:%M"),
                   Global_active_power = cumsum(rnorm(2880, 0.02, 0.02) *
                                         rep(rep(c(1, -1), 4), 2880 / 8)))

data$datetime <- as.POSIXct(paste(data$Date,data$Time),tz="UCT")
plot(data$datetime,data$Global_active_power,type="l")

Вот сюжет:введите описание изображения здесь

Другие вопросы по тегам