Base64
Base64 является общим термином для ряда аналогичных схем кодирования, которые кодируют двоичные данные, обрабатывая его численно и переводя его в представление базы 64. Термин Base64 исходит из конкретной кодировки передачи содержимого MIME.
Схемы кодирования Base64 обычно используются, когда необходимо кодировать двоичные данные, которые необходимо хранить и передавать по носителям, которые предназначены для обработки текстовых данных , Это делается для того, чтобы данные сохранялись без изменений во время транспортировки. Base64 обычно используется в ряде приложений, включая электронную почту через MIME, и хранение сложных данных в XML.
Сложнее всего иметь столбец в вашем наборе данных в качестве даты. Давай сделаем это вместе. Во-первых, давайте использовать эти данные для решения нашей проблемы:
sample_data <- structure(list(purchase_month = structure(c(17713, 17744, 17775,
17805, 17713, 17744, 17775, 17805), class = "Date"), type = structure(c(2L,
2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("domestic", "local"), class = "factor"),
orders = c(199, 231, 222, 190, 1102, 924, 999, 779)), row.names = c(NA,
-8L), class = "data.frame")
Это данные, которые мы будем использовать:
sample_data
purchase_month type orders
1 2018-07 local 199
2 2018-08 local 231
3 2018-09 local 222
4 2018-10 local 190
5 2018-07 domestic 1102
6 2018-08 domestic 924
7 2018-09 domestic 999
8 2018-10 domestic 779
Обратите внимание, что purchase_month
не является датой. Я преобразую его в дату, добавив -01
к ее концу, потому что каждая дата в R
нуждается в дне. Так как вас интересуют месяцы, мы можем использовать любой день здесь. Затем я буду использовать функцию ymd
из пакета lubridate
, чтобы сообщить R
, что наши строки имеют формат год-месяц-день:
library(lubridate)
sample_data$purchase_month <- ymd(paste0(sample_data$purchase_month, "-01"))
Нет, вам просто нужно использовать свой собственный [1110 ] код для того, чтобы иметь ваш участок:
ggplot(data = sample_data, aes(x = purchase_month, y = orders)) +
geom_line(aes(color = type), size = 1) +
scale_color_manual(values = c("#00AFBB", "#E7B800")) +
theme_minimal()
Если мы изменим столбец purchase_month
на класс yearmon
, а затем укажем тот же масштаб X, он будет работать. Использование данных, воспроизводимых в примечании в конце:
library(zoo)
sample_data2 <- transform(sample_data, purchase_month = as.yearmon(purchase_month))
ggplot(data = sample_data2, aes(x = purchase_month, y = orders)) +
geom_line(aes(color = type), size = 1) +
scale_color_manual(values = c("#00AFBB", "#E7B800")) +
theme_minimal() +
scale_x_yearmon()
или другой подход, заключается в преобразовании в многомерный ряд широкой формы с одним столбцом на тип и использованием autoplot.zoo
. Обратите внимание, что, опуская facet = NULL
, можно получить многопанельный выход.
library(zoo)
z <- read.zoo(sample_data, index = "purchase_month", split = "type", FUN = as.yearmon)
autoplot(z, geom = "blank", facet = NULL) +
geom_line(size = 1) +
scale_color_manual(values = c("#00AFBB", "#E7B800")) +
theme_minimal() +
scale_x_yearmon()
Любой из них производит:
Lines <- "
purchase_month | type | orders
2018-07 | local | 199
2018-08 | local | 231
2018-09 | local | 222
2018-10 | local | 190
2018-07 | domestic | 1102
2018-08 | domestic | 924
2018-09 | domestic | 999
2018-10 | domestic | 779"
sample_data <- read.table(text = Lines, header = TRUE, sep = "|", strip.white = TRUE)
В вашем коде есть две ошибки:
purchase_month
не является объектом класса "Date"
. group
данные по type
. Я имею в виду следующее.
sample_data$purchase_month <- as.Date(paste(sample_data$purchase_month, "01", sep = "-"))
ggplot(data = sample_data,
aes(x = purchase_month, y = orders, color = type), group = type) +
geom_line(size = 1) +
scale_color_manual(values = c("#00AFBB", "#E7B800")) +
theme_minimal()