Как отображать даты на оси X каждые 3 или 6 месяцев в ggplot2 - PullRequest
1 голос
/ 08 мая 2020

Я генерирую график с кодом ниже:

ggplot(reshaped_median, aes(x= Month_Yr, y = value))+ 
geom_line(aes(color = Sentiments)) + 
geom_point(aes(color = Sentiments)) + 
labs(title = 'Change in Sentiments (in median)', x = 'Month_Yr', y = 'Proportion of Sentiments %') + 
theme(axis.text.x = element_text(angle = 60, hjust = 1))

enter image description here

Но, как вы можете заметить, метки дат на оси x слишком плотные , поэтому, если я хочу, чтобы он отображал дату ежеквартально или каждые полгода (каждые 3 или 6 месяцев).

Значения из Month_Yr имеют формат %Y-%m.

Как могло Я делаю это? Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 мая 2020

Дата первого преобразования: df$Month_Yr <- as.Date(as.yearmon(df$Month_Yr))

Затем используйте это, чтобы решить проблему:

ggplot(reshaped_median, aes(x= Month_Yr, y = value))+ 
  geom_line(aes(color = Sentiments)) + 
  geom_point(aes(color = Sentiments)) + 
  #Here you set date_breaks  ="6 month" or what you wish
  scale_x_date(date_labels="%b-%d",date_breaks  ="3 month")+
  labs(title = 'Change in Sentiments (in median)', x = 'Month_Yr', y = 'Proportion of Sentiments %') + 
  theme(axis.text.x = element_text(angle = 60, hjust = 1))
2 голосов
/ 08 мая 2020

Вот еще способ. С помощью scale_x_date вы можете легко манипулировать разрывами на оси X.

library(ggplot2)
library(tibble)

data <- tibble(
  Month_Yr = seq.Date(from = as.Date("2010/01/01"), to =  as.Date("2020/01/31"), by = "month"),
  Value = runif(121, min = 0, max = 150)
)


p <- ggplot(data = data, aes(x = Month_Yr, y = Value)) + 
  geom_point() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
  scale_x_date(date_breaks = "6 months")
p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...