Custom ggplot2 axis and label formatting
<p>I'm trying to draw labels which look informative, clear and tidy.</p>

<p>I <a href="https://stackoverflow.com/questions/34903368/how-to-center-stacked-percent-barchart-labels-in-ggplot2">was following example</a> and raised one more question about <code>label</code> and <code>axis</code> formatting. </p>

<p>For example, I have sales data which includes Brand, Categories and Expenditure in EUR. When sum of EUR is big (millions or more) labels look really hard to read and not informative. </p>

<p>As a result, <code>x-axis</code> is in <code>Scientific notation</code> and also looks really uncleanly.</p>

<p>I've manage to format labels in custom way: it shows Eur in thousands.
 <code>geom_text(aes(label= paste(round(EUR/1000,0),"€"), y=pos), colour="white")</code> 
Is there an easier or automated way?</p>

<p>As <code>Scientific notation</code> looks really unclear, for axis I tried using <code>scale_y_continuous(formatter = "dollar")</code>, but this seems do not work. Moreover, I was unable to find if there is <code>Eur</code> also implemented instead of dollar. I believe that it would be the best to show <code>y-axis</code> in <code>thousands</code>. 
Any solutions?</p>

<p>Also, I enclose reproducible example:</p>

<pre><code>library(plyr)
library(dplyr)
library(ggplot2)
library(scales)


set.seed(1992)
n=68

Category &lt;- sample(c("Black", "Red", "Blue", "Cyna", "Purple"), n, replace = TRUE, prob = NULL)
Brand &lt;- sample("Brand", n, replace = TRUE, prob = NULL)
Brand &lt;- paste0(Brand, sample(1:5, n, replace = TRUE, prob = NULL))
EUR &lt;- abs(rnorm(n))*100000

df &lt;- data.frame(Category, Brand, EUR)


df.summary = df %&gt;% group_by(Brand, Category) %&gt;% 
  summarise(EUR = sum(EUR)) %&gt;%   # Within each Brand, sum all values in each Category
  mutate( pos = cumsum(EUR)-0.5*EUR)



ggplot(df.summary, aes(x=reorder(Brand,EUR,function(x)+sum(x)), y=EUR, fill=Category)) +
  geom_bar(stat='identity',  width = .7, colour="black", lwd=0.1) +
  geom_text(aes(label=ifelse(EUR&gt;100,paste(round(EUR/1000,0),"€"),""),
                y=pos), colour="white") +
  coord_flip()+
  labs(y="", x="")
</code></pre>

<p><a href="https://i.stack.imgur.com/Db6W0.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Db6W0.png" alt="enter image description here"></a></p>