Подтвердить что ты не робот

Даты форматирования по оси X в ggplot2

У меня очень и очень тяжелое время, когда ось х будет выглядеть правильно для моих графиков.

Вот мои данные (сгенерированные с помощью dput()):

df <- structure(list(Month = structure(1:12, .Label = c("2011-07-31", "2011-08-31", "2011-09-30", "2011-10-31", "2011-11-30", "2011-12-31", "2012-01-31", "2012-02-29", "2012-03-31", "2012-04-30", "2012-05-31", "2012-06-30"), class = "factor"), AvgVisits = c(6.98655104580674,7.66045407330464, 7.69761337479304, 7.54387561322994, 7.24483848458728, 6.32001400498928, 6.66794871794872, 7.207780853854, 7.60281201431308, 6.70113837397123, 6.57634103019538, 6.75321935568936)), .Names = c("Month","AvgVisits"), row.names = c(NA, -12L), class = "data.frame")

Вот диаграмма, которую я пытаюсь отобразить:

ggplot(df, aes(x = Month, y = AvgVisits)) + 
  geom_bar() +
  theme_bw() +
  labs(x = "Month", y = "Average Visits per User")

Эта диаграмма работает нормально - но если я хочу настроить форматирование даты, я считаю, что я должен добавить это: scale_x_date(labels = date_format("%m-%Y"))

Я пытаюсь сделать так, чтобы метки даты были "MMM-YYYY"

ggplot(df, aes(x = Month, y = AvgVisits)) + 
  geom_bar() +
  theme_bw() +
  labs(x = "Month", y = "Average Visits per User") +
  scale_x_date(labels = date_format("%m-%Y"))

Когда я рисую это, я продолжаю получать эту ошибку:

stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

Несмотря на часы исследований по форматированию geom_line и geom_bar, я не могу это исправить. Может ли кто-нибудь объяснить, что я делаю неправильно?

Изменить: как последующая мысль: можете ли вы использовать дату в качестве фактора или использовать as.Date в столбце даты?

4b9b3361

Ответ 1

Можете ли вы использовать дату в качестве фактора?

Да, но вы, вероятно, не должны.

... или использовать as.Date в столбце даты?

Да.

Что приводит нас к этому:

library(scales)
df$Month <- as.Date(df$Month)
ggplot(df, aes(x = Month, y = AvgVisits)) + 
  geom_bar(stat = "identity") +
  theme_bw() +
  labs(x = "Month", y = "Average Visits per User") +
  scale_x_date(labels = date_format("%m-%Y"))

enter image description here

в который я добавил stat = "identity" к вашему вызову geom_bar.

Кроме того, сообщение об ширине бина не было ошибкой. Ошибка будет на самом деле сказать "Ошибка" в нем, и аналогично предупреждение всегда будет говорить "Предупреждение" в нем. В противном случае это просто сообщение.

Ответ 2

Показывать месяцы как январь 2017 года февраль 2017 и т.д.:

scale_x_date(date_breaks = "1 month", date_labels =  "%b %Y") 

Устраните даты, если они занимают слишком много места:

theme(axis.text.x=element_text(angle=60, hjust=1))