My code produces this graph:
Code:
ggplot(areas, aes(x = RETAILER, y = Difference), label=sprintf(\"%0.2f\", round(areas$Difference, digits
Recent versions of ggplot2/scales
packages offer arguments to the scales::percent
function, for instance to round percentages to integers:
scale_y_continuous(labels = scales::percent_format(accuracy = 1L))
This is roughly equivalent to round(x, 0L)
: Note the 1
instead of 0
.
Or for two digits:
scale_y_continuous(labels = scales::percent_format(accuracy = 3L))
There is a near-duplicate question. Check Henrik's answer here: How to prevent scales::percent from adding decimal
I use the percent
function from formattable
within geom_text
.
So in your case I would do like so:
geom_text(aes(label = formattable::percent(Difference)),
vjust = ifelse(Difference >= 0, -1.5, 1.5))
you can define digits
within percent
, but the default is 2, which is what you're looking for. The % symbols remains, like you desire. Plus, you can do stuff with it as it is still numeric
underneath and not character
like other solutions out there.
aes(label=paste(round(Difference*100,digits= 2),"%",sep=""))
geom_text(label=percent(Difference,.11))