# setting y axis to specific values

11 views (last 30 days)
Ines Shekhovtsov on 4 Jan 2023
Commented: Voss on 6 Jan 2023
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])
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 CommentsShow NoneHide None
Ines Shekhovtsov on 4 Jan 2023
Edited: Ines Shekhovtsov on 4 Jan 2023
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])
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 on 6 Jan 2023
@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 on 4 Jan 2023
Edited: Voss on 4 Jan 2023
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 CommentsShow NoneHide None
Ines Shekhovtsov on 6 Jan 2023
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 on 6 Jan 2023
You're welcome!
Try it out, and let me know if you have any questions or problems.

### Categories

Find more on Line Plots in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!