Как добавить общее количество значений на оси Y столбца диаграммы в графике анализа временных рядов в r - PullRequest
0 голосов
/ 28 февраля 2020

Я создал график из двух переменных (customer.complaints и Date_by_month) для графика трендов месячных уровней гранулярности, но на оси Y он показывает мне имя жалобы, а не общее число жалоб в этом конкретном месяце. Это график, который я получаю enter image description here, поскольку вы можете видеть значение оси Y, это довольно раздражает. вместо этого я хочу добавить количество значений. Вот мой фрагмент кода

library(ggplot2)
library(scales)

### Provide the trend chart for the number of complaints at monthly and daily granularity levels.
# converting date var to date type 
comcast$Date <- gsub('-', '/', comcast$Date)
comcast$Date <- as.Date(comcast$Date, '%d/%m/%Y')

# plotting graph for monthly granularity levels
comcast$Date_by_month <- as.Date(cut(comcast$Date, breaks='month'))
ggplot(comcast, aes(Date_by_month, Customer.Complaint)) + stat_summary(fun.y=sum, geom='bar') + scale_x_date(labels=date_format("%Y-%m"), breaks='1 month') + scale_y_continuous(labels = fun.y= length)

1 Ответ

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

Здесь есть несколько вопросов. Код, который вы опубликовали, на самом деле имеет синтаксическую ошибку в последней строке, поэтому он вообще не запускается: scale_y_continuous(labels = fun.y= length), поэтому, какой бы код ни создавал ваш график, это был не код, который вы опубликовали.

В строке stat_summary(fun.y=sum, geom='bar') вы просите получить сумму текстовой переменной, которая не имеет никакого смысла (возможно, вы имели в виду count или length?)

И, из Конечно, ваша проблема не воспроизводима, потому что вы не предоставили нам никаких данных, чтобы опробовать ее.

Тем не менее, давайте воссоздадим похожий фрейм данных:

library(ggplot2)
library(lubridate)
library(scales)

random_words  <- function(x) paste0(sample(c(" ", " ", letters), 50, TRUE), collapse = "")
Date_by_month <- as.Date(as.POSIXct("2015-01-01") + months(sample(12, 100, TRUE)))
complaints    <- sapply(1:50, random_words)

comcast <- data.frame(Date_by_month = as_date(Date_by_month), Customer.Complaint = complaints) 

head(comcast)
#>   Date_by_month                                 Customer.Complaint
#> 1    2015-09-30 impzvcx esxfmknrpufewh   fxqknamay qhob cvpzlgubpu
#> 2    2015-08-31 mwt aezkcolutpengovtggeqavkxnfr myrq famttzzurj ug
#> 3    2015-04-30 uusewv wjxdpywsssqxgclhmlksrxqnqdfsip u jrdsfbldey
#> 4    2015-08-31 sf jytjtwseahfaqtvzisozuhhtrzygysxndyjifxoaytxhncf
#> 5    2015-06-30 vabtbfijnkeflhgpsspxyasiistuqqqjxuqs bsucp lbdrgbn
#> 6    2015-03-01 eylmurltlfgcp rvfdx as hiehnqdrn lrqanrmf quvzbhgh

Теперь, нам на самом деле не нужно включать жалобы в таблицу. Мы можем просто указать даты ggplot, и он будет автоматически выполнять подсчет, если мы выберем geom_bar:

ggplot(comcast, aes(Date_by_month)) + 
  geom_bar() +
  scale_x_date(labels = date_format("%Y-%m"), breaks='1 month')

Создано в 2020-02- 28 представлением пакета (v0.3.0)

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