How to scale values in y-axis to be 1-100%?
    14 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Thanathip Boonmee
 il 7 Mag 2020
  
    
    
    
    
    Risposto: Steven Lord
    
      
 il 16 Ott 2024
            The code below is what I have tried to do. I want to scale the value 200 to become 100% in the plot and the value 100 to become 50%. The x and y values are just made up, I actually need to plot 1440 different values. Help needed! Thanks in advance!
clear
x = [1, 2, 3, 4, 5, 6, 7, 8, 9];
y = [5, 50, 200, 180, 100, 60, 53, 0, 2];
figure
ax = axes;
plot(x,y); 
set(ax, 'YTick', [0:10:100], 'YLim', [0, max(y)]);
ytickformat(ax, 'percentage');
ax.YGrid = 'on';
xlabel('Time (Minutes)');
ylabel('Energy Percentage');

0 Commenti
Risposta accettata
  Mehmed Saad
      
 il 7 Mag 2020
        
      Modificato: Mehmed Saad
      
 il 7 Mag 2020
  
      clear
x = [1, 2, 3, 4, 5, 6, 7, 8, 9];
y = [5, 50, 200, 180, 100, 60, 53, 0, 2];
figure
ax = axes;
plot(x,y); 
set(ax, 'YTick', [0:10:100], 'YLim', [0, max(y)]);
ytickformat(ax, 'percentage');
Save the yticklabels to a variable as it might be difficult for you to create them
ylbs = ax.YTickLabel;
Set yticks to 0:20:200
ax.YTick = 0:20:200;
and label them from 0 to 100
ax.YTickLabel = ylbs;
ax.YGrid = 'on';
xlabel('Time (Minutes)');
ylabel('Energy Percentage');
Or other way of generating tick label by yourself is
generate number from 0 to 100, convert it to string, split it to cell and add a percentage sign using strcat,
clear
x = [1, 2, 3, 4, 5, 6, 7, 8, 9];
y = [5, 50, 200, 180, 100, 60, 53, 0, 2];
figure
ax = axes;
plot(x,y); 
set(ax, 'YTick', 0:20:200,...
    'YTickLabel',strcat(split(num2str(0:10:100)),'%'),...
    'YLim', [0, max(y)]);
ax.YGrid = 'on';
xlabel('Time (Minutes)');
ylabel('Energy Percentage');
8 Commenti
  Manish
 il 16 Ott 2024
				How to plot multiple variables with different range of values with same X axis on a single plot with Y axis as percentage?
  DGM
      
      
 il 16 Ott 2024
				If they all have a different range of values, then what does "percentage" mean?  Percentage of what?  If I have two y-data vectors:
y1 = [123 467 783];
y2 = [72 93 21];
What are these in %?  In other words, what is the normalizing value?  Do both y1 and y2 use the same normalizing value?
Più risposte (1)
  Steven Lord
    
      
 il 16 Ott 2024
        x = [1, 2, 3, 4, 5, 6, 7, 8, 9];
y = [5, 50, 200, 180, 100, 60, 53, 0, 2];
yn = normalize(y, "Range", [0 100]);
plot(x, yn); 
yticks(0:10:100)
ytickformat('percentage');
xlabel('Time (Minutes)');
ylabel('Energy Percentage');
0 Commenti
Vedere anche
Categorie
				Scopri di più su Axes Appearance in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!








