How can I use splitapply() in matlab appdesigner?
    5 views (last 30 days)
  
       Show older comments
    
Hi! :)
I have matlab 2018 and really dont want to upgrade to newer versions right now.
What I was wondering was whether anybody could show with an easy example how I can apply splitapply() to group my data in a 2 dimensional plot. Earlier I have seen a post regarding this issue but I didnt understand how to do that..
I have a heterogenous table osmotic data and I want to group my 2 d plot with the text data showing the bestsalts which is a colum containing two salts each row, like CaCl2 NaCl , ZnBr2 KCl
1 Comment
Answers (1)
  Cris LaPierre
    
      
 on 11 Feb 2024
        
      Edited: Cris LaPierre
    
      
 on 11 Feb 2024
  
      You could use a differnt function that incorporates grouping, like gscatter.
load carsmall
gscatter(Displacement,Horsepower,Model_Year)
To specifically use splitapply, create an anonymous function with your plotting command. Something like this (I'm specivically trying to duplicate gscatter here).
figure
hold on
[G,ID] = findgroups(Model_Year);
splitapply(@(x)plot(x(:,1),x(:,2),'.','MarkerSize',20),[Displacement,Horsepower],G)
legend(string(ID),'Location','best')
1 Comment
  Cris LaPierre
    
      
 on 12 Feb 2024
				Here's what the actual callback funciton might look like. I'm assuming the data to plot is a property of the app. See this page if you don't know what that means:
https://www.mathworks.com/help/matlab/creating_guis/share-data-across-callbacks-in-app-designer.html
function ButtonPushed(app, event)
    hold(app.UIAxes,"on")
    [G,ID] = findgroups(app.Model_Year);
    splitapply(@(x)plot(app.UIAxes,x(:,1),x(:,2),'.','MarkerSize',20),[app.Displacement,app.Horsepower],G);
    legend(app.UIAxes,string(ID),'Location','best')
end
See Also
Categories
				Find more on Desktop in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
