Месяцы по оси X вместо числа - PullRequest
       52

Месяцы по оси X вместо числа

0 голосов
/ 03 октября 2019

Я хочу преобразовать числа по оси X в месяцы, и мне как-то это удалось, но я хочу, чтобы месяцы располагались в хронологическом порядке, а не в алфавитном порядке.

Я использовал следующий код:

temp %>% 
  ggplot(aes(month.abb[MoSold], fill = SalePrice)) + 
  geom_bar() +
  scale_y_continuous(labels = number) +
  xlab("Month") +
  theme_bw()

приведенный выше код создает следующий график месяцев в алфавитном порядке.

Вместо этого я хочу, чтобы график выглядел как имя, а не число graphс хронологическим порядком без названия месяца

1 Ответ

0 голосов
/ 03 октября 2019

month.abb[] создает символы, которые не имеют собственного порядка в R, кроме алфавитного, как их отображает ggplot.

ggplot(data = data.frame(
  months = month.abb[1:10],
  num = 1:10),
  aes(months, num)) +
  geom_col()

enter image description here

Чтобы увидеть их в ожидаемом порядке, есть как минимум 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()

enter image description here

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")

enter image description here

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