R: Как отобразить диапазон в гистограмме? - PullRequest
0 голосов
/ 28 февраля 2020

Попробуйте сгенерировать гистограмму так же, как Excel, но возможно ли это в R? Хотите отображать общее количество еженедельных заказов по заказам с начальной и конечной датой недели.

User            Due_date            Status  

a               02-10-2017          Complete
b               02-02-2017          Ordered
a               02-08-2017          Complete
c               02-08-2017          Complete
a               02-08-2017          Ordered
s               02-06-2017          Complete
c               02-06-2017          Complete
s               02-06-2017          Ordered
b               02-06-2017          Ordered
c               02-11-2017          Complete
a               02-11-2017          Ordered
s               02-11-2017          Ordered
c               02-01-2017          Complete
s               02-01-2017          Ordered
b               02-01-2017          Complete
b               02-10-2017          Complete

Попробуйте создать отчет, но не отображается диапазон, который отображается в Excel, пожалуйста, проверьте код и прикрепленный скриншот .

library(lubridate)
Data$Week_Due = (ceiling_date(Data$Due.Date, "week") +  ifelse(weekdays(Data$Due.Date) %in% c("Saturday", "Sunday"), 5,-2))

library(rpivotTable)
rpivotTable(Data,  aggregatorName = "Count",  rows = "User",  cols = c("Week_Due","User","Status"),  width = "100%",  height = "500px",rendererName = "Bar Chart")

Щелкните здесь для получения снимка экрана

1 Ответ

0 голосов
/ 28 февраля 2020

ОК - вот немного более сложный пример, который должен быть ближе к тому, чего вы хотите достичь: для изменения надписей на оси х, чтобы показать диапазоны дат, вам нужно вставить простую функцию. И я использую breaks вместо date_breaks, чтобы сместить тиковые отметки более или менее посередине под столбцами гистограммы.

ggplot(Data, aes(x = Due_date)) + geom_histogram(binwidth = 7) + 
    scale_x_date(breaks = seq(min(Data$Due_date), max(Data$Due_date), by = 7),
        labels = function(x) paste0(format(x, "%d-%m-%Y"), ", ", format(x+7, "%d-%m-%Y"))) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
...