Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Outlined text with ggplot2

Tags:

r

ggplot2

I'd like to know if there is a way to draw "outlined text" with ggplot2, for example black text with a small white border, in order to make it easily readable on backgrounds such as maps.

Ideally I'd like to achieve the same type of labels you can see on Google Maps :

enter image description here

Thanks in advance for any hints !

like image 292
juba Avatar asked May 21 '12 13:05

juba


2 Answers

Much simplier solution is to use shadowtext library and use geom_shadowtext instead of geom_text

like image 132
Karol Daniluk Avatar answered Sep 21 '22 16:09

Karol Daniluk


Here is an approach that implements the general idea from the shadowtext function in the TeachingDemos package. The code for the middle part could be wrapped into a function to simplify some things. The example is blatantly stolen from Richie Cotton's answer:

d <- diamonds[sample(nrow(diamonds), 10), ]     p <- ggplot(d, aes(carat, price) )  theta <- seq(pi/8, 2*pi, length.out=16) xo <- diff(range(d$carat))/200 yo <- diff(range(d$price))/200 for(i in theta) {     p <- p + geom_text(          bquote(aes(x=carat+.(cos(i)*xo),y=price+.(sin(i)*yo),label=cut)),                      size=12, colour='black' ) } p <- p + geom_text( aes(label=cut), size=12, colour='white' ) p <- p + opts( panel.background=theme_rect(fill='green' ) ) print(p) 

enter image description here

like image 33
Greg Snow Avatar answered Sep 17 '22 16:09

Greg Snow