Formatting dates with scale_x_date in ggplot2
Solution 1
With the new ggplot2 v 2.0.0, a way to do it is :
scale_x_date(date_breaks = "1 month", date_minor_breaks = "1 week",
date_labels = "%B")
Solution 2
Nevermind, the answer was to use the version found in the documentation,
scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=date_format("%B")) +
And to include library(scales)
as the documentation says.
Mittenchops
Updated on January 16, 2020Comments
-
Mittenchops over 4 years
In a previous version of ggplot2, I was able to use one of the two following commands to format my x dates: Either
scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=(date_format="%B")) +
or
scale_x_date(major="months", minor="weeks", format="%B") +
to produce "%B" format, of full month name.
(I'm afraid I can no longer distinguish which one worked, because they were both commented out.)
I don't recall when, but after updating either R or ggplot in an ubuntu 12.04 upgrade, this no longer worked for me. Now, the very same data produces the error:
Error in scale_labels.continuous(scale) : Breaks and labels are different lengths
With the first, and
Error in continuous_scale(aesthetics, "date", identity, breaks = breaks, : unused argument(s) (major = "months", minor = "weeks", format = "%B")
With the second.
If I remove the labels= argument, and apply
scale_x_date(breaks = "1 month", minor_breaks = "1 week") +
it produces a date format of "YYYY-MM-DD" on the first of each month.
Consulting with the help for function ?scale_x_date, I've also tried the following:
scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=date_format("%B")) +
But this produces this error:
Error in structure(list(call = match.call(), aesthetics = aesthetics, : could not find function "date_format"
How can I achieve month-name "%B" formatting on my x axis? (If you have any additional insights into the mechanics producing these error messages, I'd also appreciate it.)
-
Eric Fail almost 12 yearsYou should consider recognizing this as an complete answer and close this thread.
-
drmariod over 7 yearsMaybe updating the parameters to
date_break
anddate_minor_break
since the newggplot2
version... -
Mittenchops over 7 yearscorrect @drmariod, it seems the API has changed again and my answer is no longer valid (though the advice to use the version found is the documentation is still good!). I'll recognize YCR's answer as now correct, if I can revise...
-
Mittenchops over 7 yearsMy answer below is now out of date. This has the right params.
-
Rafael about 4 yearsHi, I need to order months in a different way, like month.abb[c(7:12, 1:6)]. Any hint? ¡Thanks!
-
Andrew over 3 yearsWorks good, but how to show only short names like : Jan, Feb, Mar, ... ?
-
YCR over 3 yearsIt is controlled by date_labels. Use the list in the strptime function to fit your requirements: rdocumentation.org/packages/base/versions/3.6.2/topics/strptime. For abbreviate months, it is %b