How to scale values in y-axis to be 1-100%?
30 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Mehmed Saad
2020-5-7
编辑:Mehmed Saad
2020-5-7
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 个评论
Manish
2024-10-16
How to plot multiple variables with different range of values with same X axis on a single plot with Y axis as percentage?
DGM
2024-10-16
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?
更多回答(1 个)
Steven Lord
2024-10-16
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Axes Appearance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!