I am trying to do a scatter plot with 2 different Y axes with different scales using imported data on a graph.

I am trying to make a scatter plot of two data sets with the same x axis but two different y axis. I see how to do it with a line plot but can not seem to figure it out with a scatter plot with imported data from a table. Any help would be appreciated. Thank you.

Answers (2)

x1 = rand(1,10) ;
y1 = rand(1,10) ;
z1 = sqrt(x1.^2+y1.^2) ;
yyaxis left
scatter(x1,y1,[],z1,'filled','O')
x2 = x1;
y2 = rand(1,10)+10 ;
z2 = sqrt(x2.^2+y2.^2) ;
yyaxis right
scatter(x2,y2,[],z2,'filled','s')
% Dataset in a table
T = table((1:100)', cumsum(rand(100,1)), cumsum(rand(100,1)), 'VariableNames', {'Time', 'Data1', 'Data2'})
T = 100×3 table
Time Data1 Data2 ____ _______ _______ 1 0.48783 0.25794 2 0.52543 1.0037 3 1.1565 1.5112 4 1.7177 1.8596 5 2.4556 1.9385 6 2.8473 2.7949 7 3.1231 3.0652 8 4.0823 3.3043 9 4.7703 3.4385 10 5.5753 4.2247 11 6.3436 4.5791 12 6.7197 5.3782 13 7.0281 6.0013 14 7.7479 6.9337 15 8.3779 7.3871 16 9.2435 7.4251
% Left plot
x = T.Time;
y = T.Data1;
yyaxis left
scatter(x,y)
ylabel('Data 1')
% Right plot
z = T.Data2;
yyaxis right
scatter(x,z)
ylabel('Data 2')

6 Comments

What if we are not doing it based off a function but instead off a data set in a table imported from excel?
Hi appolgoies, I could not quite get it the way you did. I imported the data from excel so its not a table within the script but instead reading from one. In the figure below I have it showing how I have the data imported. Since its not on the actual script, I am wondering if there is a way to do the two Y axes with it imported from excel.
Where the data originates is not relevant, if the data is stored in MATLAB table, you can use yyaxis the way @Bora Eryilmaz shows in his post.
The code from your screen shot is calling readtable, which reads a table (in this case from an Excel spreadsheet) and creates a MATLAB table. On the right side of your screenshot you can see you have a MATLAB table with 1568 rows and 7 variables. Your data is in a table, so you can use yyaxis.
For example:
yyaxis left
scatter(dec22LN2testingPROCESSEDS2.DelTmin,dec22LN2testingPROCESSEDS2.OutletK)
yyaxis right
scatter(dec22LN2testingPROCESSEDS2.DelTmin,dec22LN2testingPROCESSEDS2.MassFlow)
Note that starting in R2021b you can use a different syntax for plotting data in a table:
yyaxis left
scatter(dec22LN2testingPROCESSEDS2,'DelTmin','OutletK')
yyaxis right
scatter(dec22LN2testingPROCESSEDS2,'DelTmin','MassFlow')
Oh thank you so much for all the help! I am still in the process fo learning matlab. I really appreciate it!

Sign in to comment.

Categories

Asked:

on 22 Dec 2022

Commented:

on 24 Dec 2022

Community Treasure Hunt

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

Start Hunting!