Change colors of individual strings of a figure
    18 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hello dear community,
I want to display the text of a figure in different colors. The text consists of several strings which are displayed with the font color black. Dynamically strings should be added to the text line by line with a fixed color if a boolean variable is true. Unfortunately I have no idea how this could work.
Here is an example how I have tried:
set(mainHandles.text, 'String', [{'abc'};...
    {'dfg'};...
    {'hij'};...
    {'klm'};...
    {'stu'};...
    {'vwxyz'}]); %black font coulor
text_data                    = arrayfun(@(x) text(join(['\\color{x}sadfsdgs')),...
                                    cell2mat(Data(is_true,1)), 'UniformOutput', false);
mainHandles.text.String         = vertcat(mainHandles.text.String, text_modules);                                
mainHandles.text is the text object of the figure. Data contains the color of the respective string. With is_true the active strings are addressed.
Regardless of the fact that I have to reset the text of the figure with set, passing the font color in the string itself does not work - invalid parameter/value pair arguments.
Do any of you have an idea how I could make it all happen?
Many thanks for the help
0 commentaires
Réponse acceptée
  dpb
      
      
 le 20 Nov 2020
        Well, it'll take a fair amount of detailed coding, but it can be done...as a crude illustration try the following code...
close,hAx=gca;
hTxt=text(0.5,0.5, [{'\color{black}abc'};...
{'\color{red}dfg'};...
{'\color{black}hij'};...
{'\color{black}klm'};...
{'\color{black}stu'};...
{'\color{darkGreen}vwxyz'}]);
pause 5
hTxt.String(1)=strrep(hTxt.String(1),'black','red');
3 commentaires
  Maurilio Matracia
 le 13 Juin 2022
				Hi Nicolas, could you please attach the code you used for applying the rgb triplets?
  dpb
      
      
 le 13 Juin 2022
				
      Modifié(e) : dpb
      
      
 le 13 Juin 2022
  
			I have no idea what code may have used, but the syntax is  
hTxt=text(0.1,0.5, {'\color[rgb]{0, 1, 0}abc'});
NB: the RGB string is inside square brackets and the RGB triplet is a cell array; the syntax is quite particular in this.
As noted (I think above?) this is all in the "See Also" doc link from text inside the text properties "TeX Markup Options" section.
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


