Hi List,
I would appreciate any suggestion on how can I make a text I’ve inserted in
a plot show some contrast? With this I mean that I have a white text on a
plot and I would like to make a tiny border around it in black, so even
being small sized and the entire graphic being small in the text page I’ll
insert it. It will be visible.
Well I tried inserting a box() function inside the text() function, R
accepts the command but there is no effect. I even tried to plot a greater
black text and then a smaller white one at the same place, but it doesn’t
look good.
Any ideas!
Bellow is my plot code without the above mentioned attempts. I’d like to add
this effect at the second text() command.
png('BaseMap.png',width=5.2,height=3.6,pointsize=5,units='in',bg=NA,restoreC
onsole=T,res=1200)
par(mar=c(5,0,0,0))
map('worldHires','brazil',ylim=c(-5.15,-4.55),xlim=c(-37,-36.1),type='n')
rect(-37.1,-5.25,-36,-4.9,density=NULL,angle=45,col='#dbf4ff',border=F)
plot(Batimetria,ylab='',xlab='',border=F,col=Cor$Cor,add=T)
plot(Municipios,ylab='',xlab='',col=rgb(245,232,140,max=255,alpha=255),add=T
,lwd=0.2)
axis(1,xaxp=c(-37,-36.1,5),cex.axis=1.5)
axis(2,yaxp=c(-5.15,-4.55,5),cex.axis=1.5)
text(Prof$Long,Prof$Lat,rownames(Prof),col='black',cex=0.9,srt=-24,font=2)
text(c(-36.96,-36.96,-36.865,-36.54,-36.37,-36.2),c(-4.96,-5.05,-5.11,-5.14,
-5.14,-5.14),c('Areia
Branca','Serra
do Mel','Porto do
Mangue','Macau','Guamaré','Galinhos'),col='Black',cex=1.3,font=2)
rect(-36.20,-4.56,-36.155,-4.565,density=NULL,angle=45,col='black',border='b
lack',lwd=0.1)
rect(-36.155,-4.56,-36.111,-4.565,density=NULL,angle=45,col='white',border='
black',lwd=0.1)
text(c(-36.20,-36.155,-36.111,-36.215),c(-4.573,-4.573,-4.573,-4.562),c('0',
'5','10','km'),col='white',cex=1)
Norte(-36.155,-4.60,0.02)
box(which='plot',lty='solid')
dev.off()
Thanks in advance!
-------------------------------------------------------------
MSc. <mailto:r.aluizio@gmail.com> Rodrigo Aluizio
Centro de Estudos do Mar/UFPR
Laboratório de Micropaleontologia
Avenida Beira Mar s/n - CEP 83255-000
Pontal do Paraná - PR – Brasil
[[alternative HTML version deleted]]
Hi Rodrigo,>> I would appreciate any suggestion on how can I make a text I?ve inserted >> in >> a plot show some contrast?There are quite a few approaches, but why not try legend? Best, Mark. Rodrigo Aluizio wrote:> > Hi List, > > I would appreciate any suggestion on how can I make a text I?ve inserted > in > a plot show some contrast? With this I mean that I have a white text on a > plot and I would like to make a tiny border around it in black, so even > being small sized and the entire graphic being small in the text page I?ll > insert it. It will be visible. > > > > Well I tried inserting a box() function inside the text() function, R > accepts the command but there is no effect. I even tried to plot a greater > black text and then a smaller white one at the same place, but it doesn?t > look good. > > > > Any ideas! > > > > Bellow is my plot code without the above mentioned attempts. I?d like to > add > this effect at the second text() command. > > > > png('BaseMap.png',width=5.2,height=3.6,pointsize=5,units='in',bg=NA,restoreC > onsole=T,res=1200) > > par(mar=c(5,0,0,0)) > > map('worldHires','brazil',ylim=c(-5.15,-4.55),xlim=c(-37,-36.1),type='n') > > rect(-37.1,-5.25,-36,-4.9,density=NULL,angle=45,col='#dbf4ff',border=F) > > plot(Batimetria,ylab='',xlab='',border=F,col=Cor$Cor,add=T) > > plot(Municipios,ylab='',xlab='',col=rgb(245,232,140,max=255,alpha=255),add=T > ,lwd=0.2) > > axis(1,xaxp=c(-37,-36.1,5),cex.axis=1.5) > > axis(2,yaxp=c(-5.15,-4.55,5),cex.axis=1.5) > > text(Prof$Long,Prof$Lat,rownames(Prof),col='black',cex=0.9,srt=-24,font=2) > > text(c(-36.96,-36.96,-36.865,-36.54,-36.37,-36.2),c(-4.96,-5.05,-5.11,-5.14, > -5.14,-5.14),c('Areia > > Branca','Serra > > do Mel','Porto do > Mangue','Macau','Guamar?','Galinhos'),col='Black',cex=1.3,font=2) > > rect(-36.20,-4.56,-36.155,-4.565,density=NULL,angle=45,col='black',border='b > lack',lwd=0.1) > > rect(-36.155,-4.56,-36.111,-4.565,density=NULL,angle=45,col='white',border=' > black',lwd=0.1) > > text(c(-36.20,-36.155,-36.111,-36.215),c(-4.573,-4.573,-4.573,-4.562),c('0', > '5','10','km'),col='white',cex=1) > > Norte(-36.155,-4.60,0.02) > > box(which='plot',lty='solid') > > dev.off() > > > > Thanks in advance! > > > > ------------------------------------------------------------- > > MSc. <mailto:r.aluizio at gmail.com> Rodrigo Aluizio > > Centro de Estudos do Mar/UFPR > Laborat?rio de Micropaleontologia > Avenida Beira Mar s/n - CEP 83255-000 > Pontal do Paran? - PR ? Brasil > > > [[alternative HTML version deleted]] > > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > >-- View this message in context: http://www.nabble.com/Text-Contrast-in-a-Plot-tp23217307p23221789.html Sent from the R help mailing list archive at Nabble.com.
Try this function as one approach:
shadowtext <- function(x, y=NULL, labels, col='white',
bg='black',
theta= seq(pi/4, 2*pi, length.out=8), r=0.1, ... ) {
xy <- xy.coords(x,y)
xo <- r*strwidth('A')
yo <- r*strheight('A')
for (i in theta) {
text( xy$x + cos(i)*xo, xy$y + sin(i)*yo, labels, col=bg, ... )
}
text(xy$x, xy$y, labels, col=col, ... )
}
And here is an example of use:
plot(1:10, 1:10, bg='aliceblue')
rect(3,3,5,8, col='navy')
text(5,6, 'Test 1', col='lightsteelblue')
shadowtext(5,4, 'Test 2', col='lightsteelblue')
Hope this helps,
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Rodrigo Aluizio
> Sent: Friday, April 24, 2009 8:12 AM
> To: R Help
> Subject: [R] Text Contrast in a Plot
>
> Hi List,
>
> I would appreciate any suggestion on how can I make a text I've
> inserted in a plot show some contrast? With this I mean that I have a
> white text on a plot and I would like to make a tiny border around it
> in black, so even being small sized and the entire graphic being small
> in the text page I'll insert it. It will be visible.
>
>
>
> Well I tried inserting a box() function inside the text() function, R
> accepts the command but there is no effect. I even tried to plot a
> greater black text and then a smaller white one at the same place, but
> it doesn't look good.
>
>
>
> Any ideas!
>
>
>
> Bellow is my plot code without the above mentioned attempts. I'd like
> to add this effect at the second text() command.
>
>
>
>
png('BaseMap.png',width=5.2,height=3.6,pointsize=5,units='in',bg=NA,res
> toreC
> onsole=T,res=1200)
>
> par(mar=c(5,0,0,0))
>
> map('worldHires','brazil',ylim=c(-5.15,-4.55),xlim=c(-37,-
> 36.1),type='n')
>
>
rect(-37.1,-5.25,-36,-4.9,density=NULL,angle=45,col='#dbf4ff',border=F)
>
> plot(Batimetria,ylab='',xlab='',border=F,col=Cor$Cor,add=T)
>
>
plot(Municipios,ylab='',xlab='',col=rgb(245,232,140,max=255,alpha=255),
> add=T
> ,lwd=0.2)
>
> axis(1,xaxp=c(-37,-36.1,5),cex.axis=1.5)
>
> axis(2,yaxp=c(-5.15,-4.55,5),cex.axis=1.5)
>
> text(Prof$Long,Prof$Lat,rownames(Prof),col='black',cex=0.9,srt=-
> 24,font=2)
>
> text(c(-36.96,-36.96,-36.865,-36.54,-36.37,-36.2),c(-4.96,-5.05,-5.11,-
> 5.14,
> -5.14,-5.14),c('Areia
>
> Branca','Serra
>
> do Mel','Porto do
>
Mangue','Macau','Guamar?','Galinhos'),col='Black',cex=1.3,font=2)
>
> rect(-36.20,-4.56,-36.155,-
> 4.565,density=NULL,angle=45,col='black',border='b
> lack',lwd=0.1)
>
> rect(-36.155,-4.56,-36.111,-
> 4.565,density=NULL,angle=45,col='white',border='
> black',lwd=0.1)
>
> text(c(-36.20,-36.155,-36.111,-36.215),c(-4.573,-4.573,-4.573,-
> 4.562),c('0',
> '5','10','km'),col='white',cex=1)
>
> Norte(-36.155,-4.60,0.02)
>
> box(which='plot',lty='solid')
>
> dev.off()
>
>
>
> Thanks in advance!
>
>
>
> -------------------------------------------------------------
>
> MSc. <mailto:r.aluizio at gmail.com> Rodrigo Aluizio
>
> Centro de Estudos do Mar/UFPR
> Laborat?rio de Micropaleontologia
> Avenida Beira Mar s/n - CEP 83255-000
> Pontal do Paran? - PR - Brasil
>
>
> [[alternative HTML version deleted]]
Rodrigo Aluizio wrote:> Hi List, > > I would appreciate any suggestion on how can I make a text I?ve inserted in > a plot show some contrast? With this I mean that I have a white text on a > plot and I would like to make a tiny border around it in black, so even > being small sized and the entire graphic being small in the text page I?ll > insert it. It will be visible. > > > > Well I tried inserting a box() function inside the text() function, R > accepts the command but there is no effect. I even tried to plot a greater > black text and then a smaller white one at the same place, but it doesn?t > look good. >Hi Rodrigo, Try boxed.labels in the plotrix package. Jim