R - ggplot с использованием фасетного переноса по году, как отображать только месяц вместо месяца / года и предотвратить перекрытие? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь изобразить что-то по годам, и, как вы можете видеть ниже, ось x немного заполнена. Есть ли способ уменьшить количество отметок (можно указать, сколько месяцев друг от друга) и чтобы отображался только месяц (т.е. январь, а не январь 2016 для всех из них)?

enter image description here

Вот мой текущий код:

graph <- ggplot() +
    geom_point(data = test, aes(x = date, y = rand), color = "black") +
    xlab('date') + ylab('num') + facet_wrap( ~ year, scales = "free_x") +
    theme(strip.text.x = element_text(size = 12))
plot(graph)

Спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Поскольку вы не предоставили данные, я сделал предположение о том, как они структурированы. Это решение сработало на моей стороне:

x<-rnorm(100)
y<-rnorm(100)
library(lubridate);library(ggplot2)
df<-as.data.frame(cbind(x,y))
df$start_date <- as.Date('2015-01-01')  
df$end_date <- as.Date('2017-01-01')   

set.seed(1984)
df$mydate<-as.Date(sample( as.numeric(start_date): as.numeric(end_date), 10, 
            replace = T), origin = '1970-01-01')

df$myyear<-year(df$mydate)
df$mymonth<-month(df$mydate)
mymonths <- c("Jan","Feb","Mar",
          "Apr","May","Jun",
          "Jul","Aug","Sep",
          "Oct","Nov","Dec")

df$MonthAbb <- mymonths[ df$mymonth ]

ggplot(df, aes(MonthAbb,y))+geom_point()+facet_wrap(~myyear)

enter image description here

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