setting y axis to specific values

34 次查看(过去 30 天)
UPDATE FROM MY QUESTION BELOW: I should have done a bit of research before posting. Don't know why i didn't assume matlab would have an automatic way to link axes. I have used the linkaxes function to link the left and right axes together and it worked. However, i still would like to apply the (-50,50) as my standard y min and y max. So for example i have the billateral muscles that are linked and have y min and ymax values as (-20,20).
I have a tiled plot and the two plots in question are tiles 1 and 2 with corresponding ax1 and ax2 variables:
% Tile 1
ax1=nexttile
p1=plot(ChannelTitle,LUTbandpass);
xlim([xlim1 xlim2])
% Tile 2
ax2=nexttile
p2=plot(ChannelTitle,RUTbandpass);
xlim([xlim1 xlim2])
linkaxes([ax1 ax2],'y')
The column vectors LUTbandpass and RUTbandpass are what i want to find the max and min of and figure out if either is below the +/- 50 and if so, want to set the y axis to (-50,50)
Hope that makes sense.
Thank you
END EDIT
Hi,
I am curious if my below code can be made more efficent/streamlined. I have two EMG plots from a muscle, one from the right side and one from the left. I want my code to look at the y max and min of both plots and determine which is higher and then set that scale for both plots.
I currently have this for the y max and y min determination:
%ymax
if max(left)<50 && max(right)<50
ymax=50
elseif max(right)>max(left)
ymax=max(right)+.15*(max(right))
else
ymax=max(left)+.15*(max(left))
end
%ymin
if min(left)>-50 && min(right)>-50
ymin=-50
elseif min(right)<min(left)
ymin=min(right)+.15*(min(right))
else
ymin=min(left)+.15*(min(left))
end
I have a set of 8 billateral muscles and don't want to repeat this code over and over.
Once i have the ymax and ymin values i will use them in my overall plot with code:
ylim([ymin ymax])
Any help would be apprecated!
Thank you in advance
  2 个评论
Ines Shekhovtsov
Ines Shekhovtsov 2023-1-4
编辑:Ines Shekhovtsov 2023-1-4
An update, i should have done a bit of research before posting. Don't know why i didn't assume matlab would have an automatic way to link axes. I have used the linkaxes function to link the left and right axes together and it worked. However, i still would like to apply the (-50,50) as my standard y min and y max. So for example i have the billateral muscles that are linked and have y min and ymax values as (-20,20).
I have a tiled plot and the two plots in question are tiles 1 and 2 with corresponding ax1 and ax2 variables:
% Tile 1
ax1=nexttile
p1=plot(ChannelTitle,LUTbandpass);
xlim([xlim1 xlim2])
% Tile 2
ax2=nexttile
p2=plot(ChannelTitle,RUTbandpass);
xlim([xlim1 xlim2])
linkaxes([ax1 ax2],'y')
The column vectors LUTbandpass and RUTbandpass are what i want to find the max and min of and figure out if either is below the +/- 50 and if so, want to set the y axis to (-50,50)
Hope that makes sense.
Thank you
Voss
Voss 2023-1-6
@Ines Shekhovtsov: Have you seen my answer? Do you think it will work for you? Is there anything that doesn't make sense about it?

请先登录,再进行评论。

采纳的回答

Voss
Voss 2023-1-4
编辑:Voss 2023-1-4
This is streamlined somewhat:
%ymax
max_left = max(left);
max_right = max(right);
if max_left < 50 && max_right < 50
ymax = 50;
else
ymax = 1.15*max(max_right,max_left);
end
%ymin
min_left = min(left);
min_right = min(right);
if min_left > -50 && min_right > -50
ymin = -50;
else
ymin = 1.15*min(min_right,min_left);
end
If you don't want to have these several lines of code repeated several times in your code, you can make it into a function ...
function out = get_ylim_from_data(left,right)
%ymax
max_left = max(left);
max_right = max(right);
if max_left < 50 && max_right < 50
ymax = 50;
else
ymax = 1.15*max(max_right,max_left);
end
%ymin
min_left = min(left);
min_right = min(right);
if min_left > -50 && min_right > -50
ymin = -50;
else
ymin = 1.15*min(min_right,min_left);
end
out = [ymin ymax];
end
... and call it when you need it:
ylim(get_ylim_from_data(left,right))
  2 个评论
Ines Shekhovtsov
Ines Shekhovtsov 2023-1-6
Thank you for the answer, it makes sense but im just not as familiar with using functions in matlab. I will take a look at this and try it out!
Voss
Voss 2023-1-6
You're welcome!
Try it out, and let me know if you have any questions or problems.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graphics Object Programming 的更多信息

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by