Skip to content

Rotating characters in text

8 messages · Stuart Rosen, David Winsemius, Greg Snow +4 more

#
For labelling a plot, I am trying to rotate a character string using 
text() so that characters are upright and reading down, for example, ...

L
i
k
e

t
h
i
s
.

It appears that par crt does not work with text. Does anyone have any 
other suggestions. Thanks!

Yours - Stuart Rosen
#
On Jun 12, 2012, at 9:49 AM, Stuart Rosen wrote:

            
Just print the letters separately. Something like this untested use of  
`mapply`:

mapply(text, labels=strsplit(txvec, ""),
         x=1,  # or some other appropriate number, should get recycled.
         y=seq(start, end, length=nchar(txvec) )
#
If you insert `\n` between each letter, then it should do what you
want with a single call to text or mtext.  To expand on David's
example:

plot(1:10)
text(5,5, paste( strsplit(txvec, ''), collapse='\n') )



On Tue, Jun 12, 2012 at 10:16 AM, David Winsemius
<dwinsemius at comcast.net> wrote:

  
    
#
Try this,


rotate = function(x) paste(strsplit(x,"")[[1]],collapse="\n")

t <- "this is a text"
plot.new()
text(1/2,1/2,t)
par(lheight=0.8)
text(1/2,1/2,rotate(t))


HTH,

b.
On 13 June 2012 01:49, Stuart Rosen <s.rosen at ucl.ac.uk> wrote:
#
Hello,

(You forgot to unlist() the result of strsplit.)

Another way, saving some space between characters is to use strheight().


rotate90 <- function(x, y, label){
	label <- unlist(strsplit(label, ''))
	y <- y - (seq_along(label) - 1)*strheight(label)
	list(x=x, y=y, label=label)
}

txt <- rotate90(5, 5, "Test rotate90")
plot(1:10)
text(txt$x, txt$y, txt$label)


Rui Barradas

Em 12-06-2012 21:02, Greg Snow escreveu:
#
On Jun 12, 2012, at 4:02 PM, Greg Snow wrote:

            
In fact it could be made even easier:

(Copied from you original.)

txvec <- c("L
i
k
e

t
h
i
s
.")
  plot(1,1)
  text(0.8, 1, labels=txvec)


--  
David.
David Winsemius, MD
West Hartford, CT
#
On 06/12/2012 11:49 PM, Stuart Rosen wrote:
Hi Stuart,
Is this what you want?

plot(1:5)
text(3,3,"L\ni\nk\ne\n\nt\nh\ni\ns\n")

Jim
#
Or for the y label and using gsub:

plot(1:5, ylab="")
text(.35,3, gsub("(.)", "\\1\n", "Like this"), xpd=TRUE)

Sticking it in ylab= does not work.

----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352