Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

How to convert UTC to EET in ggplot2 geom_segment chart?

$
0
0

I'm trying to adjust the UTC time into EET time in a gantt type of chart, where I want to plot some Cron schedulings which are in the UTC time. UTC to EET conversion does not seem to take into account the DST, e.g. for AA it should be +03:00 hours, not +02:00 hours. Here is the code. How can I adjust the time conversion and Y-axis in the plot?

library(jsonlite)library(dplyr)library(ggplot2)library(scales)library(lubridate)# JSON datajson_data <- '[{"SchedulingName": "AA", "cronExpr": "0 3 * * *"},{"SchedulingName": "AB", "cronExpr": "30 2 * * *"},{"SchedulingName": "AC", "cronExpr": "30 2 * * *"},{"SchedulingName": "AD", "cronExpr": "0 6 * * *"},{"SchedulingName": "ADD", "cronExpr": "30 2 * * *"},{"SchedulingName": "ADER", "cronExpr": "55 1,7 * * *"},{"SchedulingName": "ADF", "cronExpr": "9 9 * * *"},{"SchedulingName": "ERE", "cronExpr": "0 0 * * 0"},{"SchedulingName": "DFA", "cronExpr": "0 5 * * *"},{"SchedulingName": "DFD", "cronExpr": "45 6 * * *"},{"SchedulingName": "GREW", "cronExpr": "30 2 * * *"},{"SchedulingName": "ASDFA", "cronExpr": "9 9 * * *"},{"SchedulingName": "AFERE", "cronExpr": "30 4 * * *"},{"SchedulingName": "DFAARE", "cronExpr": "30 2 * * *"},{"SchedulingName": "DFARE", "cronExpr": "9 9 * * *"},{"SchedulingName": "DAFAD", "cronExpr": "30 2 * * *"},{"SchedulingName": "ADWER", "cronExpr": "0 5 * * *"},{"SchedulingName": "OASDFAS", "cronExpr": "0 3 * * *"},{"SchedulingName": "ASDPFAS", "cronExpr": "50 2 * * *"},{"SchedulingName": "ASDFASDF", "cronExpr": "45 3 * * *"},{"SchedulingName": "AERED", "cronExpr": "0 22 * * *"},{"SchedulingName": "ASDFAER", "cronExpr": "30 5,12 * * *"},{"SchedulingName": "AREWVSD", "cronExpr": "9 9 * * *"},{"SchedulingName": "SARAER", "cronExpr": "30 2 * * *"},{"SchedulingName": "QEFHF", "cronExpr": "0 3 * * *"},{"SchedulingName": "AFEREADF", "cronExpr": "30 3 * * *"},{"SchedulingName": "UTKY", "cronExpr": "30 6 * * *"},{"SchedulingName": "IUOU", "cronExpr": "0 5 * * *"},{"SchedulingName": "KYDF", "cronExpr": "0 7 * * *"},{"SchedulingName": "DSARAE", "cronExpr": "0 0 * * *"},{"SchedulingName": "KYRT", "cronExpr": "9 9 * * *"},{"SchedulingName": "WERRYHN", "cronExpr": "0 1 * * *"},{"SchedulingName": "FHSUR", "cronExpr": "30 12 * * *"},{"SchedulingName": "PIU", "cronExpr": "30 23 * * *"},{"SchedulingName": "ASDGYHBDV", "cronExpr": "0 3 * * *"},{"SchedulingName": "KYIUY", "cronExpr": "0 19 * * *"},{"SchedulingName": "IRETH", "cronExpr": "9 9 * * *"},{"SchedulingName": "JTUT", "cronExpr": "31 23 * * *"},{"SchedulingName": "HRURJU", "cronExpr": "0 20 * * *"}]'# Convert JSON to DataFramecron_jobs <- fromJSON(json_data)head(cron_jobs)# Process data to extract times and create POSIXct timestampscron_jobs <- cron_jobs %>%  mutate(    Minute = as.numeric(sub("^(\\d+)\\s.*", "\\1", cronExpr)),    Hour = as.numeric(sub("^\\d+\\s(\\d+).*", "\\1", cronExpr)),    StartTime = as.POSIXct(paste("2024-01-01", Hour, Minute), format = "%Y-%m-%d %H %M", tz = "UTC"),    EndTime = StartTime + 720,  # Add 12 minutes for task duration    StartTime = as_datetime(StartTime, tz = 'Europe/Helsinki'),    EndTime = as_datetime(EndTime, tz = "Europe/Helsinki")  )head(cron_jobs)# Sort the factor levels for better visualizationcron_jobs <- cron_jobs %>%  arrange(SchedulingName) %>%  mutate(SchedulingName = factor(SchedulingName, levels = rev(unique(SchedulingName))))# Date range for the Gantt chartfull_day_start <- force_tz(as.POSIXct("2024-01-01 00:00", format = "%Y-%m-%d %H:%M", tz = "UTC"), tzone = "Europe/Helsinki")full_day_end <- force_tz(as.POSIXct("2024-01-02 00:00", format = "%Y-%m-%d %H:%M", tz = "UTC"), tzone = "Europe/Helsinki")# Create Gantt chartggplot(cron_jobs, aes(x = SchedulingName, y = StartTime, xend = SchedulingName, yend = EndTime)) +  geom_segment(size = 3, color = "red") +  coord_flip() +  scale_y_datetime(    breaks = seq(full_day_start, full_day_end, by = "1 hour"),    labels = date_format("%H:%M"),    limits = c(full_day_start, full_day_end)  ) +  labs(title = "Cron Schedule Gantt Chart (EET)", x = "Task", y = "Time") +  theme_minimal() +  theme(    axis.text.x = element_text(angle = 90, hjust = 1)  )

Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>