Rotate Individual Letters in a String

Hello! I wonder if there is a way to have the word SINE rotated 90% counter-clockwise and each of the letters 90% clockwise so that the letters stand normal on oneanother like:
E N I S
Thanks!

 Akzeptierte Antwort

Jan
Jan am 24 Jan. 2012

2 Stimmen

Does this help:
S = 'SINE';
C = cell(1, numel(S));
for i = 1:numel(S)
C{i} = S(i);
end
% >> C = {'E', 'N', 'I', 'S'}
text(0.5, 0.5, C);
? I'm still not sure, what you want to achieve.

1 Kommentar

Dima
Dima am 24 Jan. 2012
Brilliant!!!! this one worked! thanks so much!!))) can you please explain to me how this code works?
My aim is to place vertical text markers on MULTIPLE points in a chart so I used a code like this:
text(Num(7:end2,1)-1,Num(7:end2,77),'S1')
now I just replaced it to work in the for-end way:
for j=7:end2
text(j,Num(j,76),C,'FontSize',2,'Color','W','VerticalAlignment','middle','HorizontalAlignment','center','Rotation',0,'BackgroundColor',[1,0.4,0.6]);
end
and it works superb!!! I now just need to generate separate word strong for each point from
S = 'SINE';
C = cell(1, numel(S));
for i = 1:numel(S)
C{i} = S(i);
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

bym
bym am 23 Jan. 2012

1 Stimme

t = 'sine'
flipud(t')
ans =
e
n
i
s

2 Kommentare

Dima
Dima am 23 Jan. 2012
thanks...but when I try to text the oputput of flipud(t') it gives the same error:
??? Error using ==> text
Each string specified must have a corresponding set of coordinates
bym
bym am 24 Jan. 2012
what are your x y arguments passed to text()?

Melden Sie sich an, um zu kommentieren.

Dima
Dima am 23 Jan. 2012

0 Stimmen

I found a way to create the vertical string :
t1 = 'S'; t2 = 'I'; t3 = 'N'; t4 = 'E';
S1 = char(t1, t2, t3);
But when I try to text this string I get the following error:
??? Error using ==> text
Each string specified must have a corresponding set of coordinates
I wonder what is the reason for this error?
Thanks!

4 Kommentare

Walter Roberson
Walter Roberson am 23 Jan. 2012
Your S1 assignment is the same as
S1 = 'SIN' .';
(No E because you did not include t4 in your char() call)
"help text" is more clear on the reason you are getting the error:
"If 'string' is an array the same number of rows as the
length of X and Y, TEXT marks each point with the corresponding row of the 'string' array."
Your array did not have the same number of rows as the length of x and y as you only passed one x and y each probably.
You will have to position the characters individually; text() does not have a mechanism to automatically position the characters in the manner you would like.
Dima
Dima am 23 Jan. 2012
sorry I meant:
S1 = strvcat(t1, t2, t3);
Walter Roberson
Walter Roberson am 23 Jan. 2012
char() with multiple single-character arguments turns out to do vertical cat anyhow.
Dima
Dima am 24 Jan. 2012
you think it is impossible to rotate the text in this way with no function whatsoever?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 23 Jan. 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by