month.abb[]
создает символы, которые не имеют собственного порядка в R, кроме алфавитного, как их отображает ggplot.
ggplot(data = data.frame(
months = month.abb[1:10],
num = 1:10),
aes(months, num)) +
geom_col()
Чтобы увидеть их в ожидаемом порядке, есть как минимум 3 варианта:
1) преобразовать month.abb
к типу данных factor
, который может иметь указанный порядок.
# Convert months to factors using `forcats` package
ggplot(data = data.frame(
months = forcats::fct_reorder(month.abb[1:10], 1:10),
num = 1:10),
aes(months, num)) +
geom_col()
# Convert months to factors using base R
ggplot(data = data.frame(
months = factor(1:10, labels = month.abb[1:10]),
num = 1:10),
aes(months, num)) +
geom_col()
2) Или вы можете поочередно использовать числовойось с пользовательскими метками, отражающими то, что вы хотите:
ggplot(data = data.frame(
month_num = 1:10,
num = 1:10),
aes(month_num, num)) +
geom_col() +
scale_x_continuous(labels = function(x) month.abb[x])
3) Или, возможно, проще всего, вы можете использовать тип данных Date или POSIXct.
ggplot(data = data.frame(
month = seq.Date(as.Date("2019-01-01"), as.Date("2019-10-01"), by = "month"),
num = 1:10),
aes(month, num)) +
geom_col() +
scale_x_date(date_breaks = "1 month",
minor_breaks = NULL, date_labels = "%b")