ggplot2: удалить и заменить ось - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь построить набор данных временных рядов по юлианскому дню, но у меня есть метки оси X в месяцах (гораздо более информативный интервал). В функции базового графика я знаю, что буду использовать xaxt="n" и axis, но не могу найти эквивалент ggplot.

Пример:

temp <- c(8,10,9,12,15,16,22,12,5,4)
julian_day <- c(1,25,63,65,70,77,150,260,300,350)
temp_month <- c(1, 1, 3, 3, 4, 4, 6, 9, 10, 12)
x <- data.frame(temp, julian_day, temp_month)

ggplot(x, aes(julian_day, temp)) + geom_line() +
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank())

Я могу построить график по правильным переменным и удалите ось X, но я не могу понять, как добавить ось x$temp_month

Я пытался добавить scale_x_discrete(breaks=c(1:12), labels=c(1:12)) и / или theme(axis.text.x = buoy_agg$month), но ни одна из них не сработала.

Я думаю, что это просто вопрос поиска правильной команды. Любые советы?

Спасибо!

1 Ответ

3 голосов
/ 09 января 2020

При построении графиков я настоятельно рекомендую использовать данные класса Date и scale_x_date - вы можете легко настроить ось с аргументами на scale_x_date, чтобы показать название месяца, сокращение месяца, номер месяца или любой другой другой формат даты.

Поскольку у вас есть юлианский день, я преобразовал его в дату произвольного не високосного года. Пока вы не помечаете год, это помогает нам легко получить правильные метки месяца.

x$date = as.Date("2018-12-31") + x$julian_day

ggplot(x, aes(date, temp)) + 
  geom_line() +
  scale_x_date(date_labels = "%b", name = "")

enter image description here

Переключатель %b до %m, если вы хотите номер месяца, а не сокращение месяца. См. ?scale_x_date для дополнительных опций и примеров.

...