How to scale values in y-axis to be 1-100%?
21 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Thanathip Boonmee
am 7 Mai 2020
Beantwortet: Steven Lord
am 16 Okt. 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 Kommentare
Akzeptierte Antwort
Mehmed Saad
am 7 Mai 2020
Bearbeitet: Mehmed Saad
am 7 Mai 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 Kommentare
Manish
am 16 Okt. 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
am 16 Okt. 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?
Weitere Antworten (1)
Steven Lord
am 16 Okt. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Axes Appearance finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!