Follow

Long short for my budding :rstats: circle...

I'm working with the `forecast` package to fit TBATS models, which is great... but when I use `autoplot` the X-axis always comes out decimal. That is, I get "2019, 2019.05,2019.10,.." as the labels (see image...). I'd prefer that as actual dates.

Scale_x_date() doesn't seem to like the incoming axis data. Does anyone know how to reformat this?

@gwmngilfen without knowing what structure the x variables are output as (a reprex would be great), there's probably a lubridate function to fix that (or at least a way to use lubridate to fix it). lubridate is magic for dates.

@gzt sorry for the delay, busy day yesterday :P

So here's a reprex: rpubs.com/gwmngilfen/reprex_fo

I've had a look at lubridate (I knew it already, and yeah, it's amazing) but couldn't just see a function for handling fractional years - but more-over, I'm not sure how to pass that data to scale_x_date anyway. It doesn't seem to accept aes() or data arguments.

Thoughts appreciated!

@gwmngilfen rdrr.io/cran/lubridate/man/dat converts decimal dates. Can't get your example to work, unfortunately, but the appropriate syntax for what you want is something like +
scale_x_date(labels = date_format("%d-%m-%Y"))

@gzt ok, so date_decimal looks perfect, thanks for that - but what do I pass to it? Something like

autoplot(fc) + scale_x_date(labels=date_decimal())

doesn't work, as date_decimal() needs an argument, but I'm unclear how to access the X-axis data...

(Also, what's wrong with the reprex? If you can't reproduce, I am clearly failing to use the tool correctly :P)

Thanks for your help!

@gzt Got it!

So, I needed to realise two things - 1, that the value of `labels` can take a function, but *without* the empty parenthese (i.e labels=date_decimal in myexample above), and that I could define my own function to pass to scale_x_continuous().

Behold! 🎉

Thanks again for your help in pointing me the right way :)

@gwmngilfen the problem with the reprex was that fc was used without being defined and replacing it with what I thought it was supposed to refer to didn't work, either, so I gave up.

@gzt so I did! It must have been defined in my environment, and I didn't clean it. Lesson learned, thanks for that!

Sign in to participate in the conversation
Fosstodon

Fosstodon is an English speaking Mastodon instance that is open to anyone who is interested in technology; particularly free & open source software.