MATLAB Answers

Jason
0

Changing colour of title in plots

Asked by Jason
on 3 May 2018
Latest activity Commented on by Star Strider
on 4 May 2018
Hello, I am trying to change the colour of strings in my plot titles and have used the following
title('\color{magenta}Month1, \color{cyan}Month2, \color{red}Month3')
However, I now want the strings Month1, Month2 & Month3 to be on different lines. I have tried
title({'\color{magenta}Month1, \color{cyan}Month2, \color{red}Month3'})
but the syntax is wrong.
Regards Jason

  0 Comments

Sign in to comment.

2 Answers

Answer by Star Strider
on 3 May 2018
 Accepted Answer

You simply need to tweak your existing title call. Put each as a separate string in a cell array:
title({'\color{magenta}Month1', '\color{cyan}Month2', '\color{red}Month3'})
This will do what you want.

  10 Comments

My pleasure.
If my Answer helped you solve your problem, please Accept it!
Jason
on 4 May 2018
Im really sorry but I wwas mistaken, its still not working when I use a name for a string.
folder =
'C:\images\BC_1.0um_1.6um (Cam530)'
its class is:
ans =
'char'
So using the suggestion:
t = {folder, 'Month2', 'Month1'};
c = {'magenta', 'cyan', 'red'};
for k1 = 1:numel(t)
tc{k1} = sprintf('\\color{%s}%s', c{k1}, t{k1});
end
title(tc)
I get:
The single ‘backslant’ (\) characters are causing the problem, and the underscore characters cause a problem with the interpreter. You need to add two additional strrep calls:
t = {'C:\images\BC_1.0um_1.6um (Cam530)', 'C:\images\BC_1.0um_1.6um (Cam531)', 'C:\images\BC_1.0um_1.6um (Cam532)'};
c = {'magenta', 'cyan', 'red'};
for k1 = 1:numel(t)
ts = strrep(t{k1}, '\','\\'); % Replace ‘\’ With ‘\\’
ts = strrep(ts, '_','\_'); % Replace ‘_’ With ‘\_’
tc{k1} = sprintf('\\color{%s}%s', c{k1}, ts);
end
title(tc)
Single backslant operators are interpreted as control characters in sprintf (and fprintf), and underscores as designating the next character as a subscript using the default TeX interpreter. Putting a backslant ahead of such characters will force them to be treated as literals.
Specifying 'Interpreter','none' turns off everything, so none of the control characters are interpreted. Two serial strrep calls are necessary because it will replace one but not both in a single call. Doing both replacements in one call results in two different outputs, each with a different replacement but neither with both.

Sign in to comment.


Answer by Ameer Hamza
on 3 May 2018

Use \newline.
title('\color{magenta}Month1,\newline \color{cyan}Month2,\newline \color{red}Month3')

  0 Comments

Sign in to comment.