Adding a scatter of points to a boxplot
    117 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Does anyone come with with a code which can match the python generated boxplot?
1 commentaire
  dpb
      
      
 le 29 Avr 2018
				Presuming the points actually a set of coordinates as shown, don't see why
hold on
scatter(x,y)
with appropriate x,y arrays and the associated color arrays, etc., wouldn't come reasonably close...
Réponse acceptée
  dpb
      
      
 le 29 Avr 2018
        Indeed, that seems to work just fine...
load carsmall MPG              % the sample dataset variable
hold on
scatter(ones(size(MPG)).*(1+(rand(size(MPG))-0.5)/10),MPG,'r','filled')
yields

It's possible to add color with value scaling in scatter see the details on it for all the particulars.
5 commentaires
  Rubina Chandnani
 le 22 Juil 2021
				In the line of code in scatter, is there a way to use a different color using uisetcolor? (I don't want to use the default colors).
  Seth DeLand
    
 le 26 Mai 2022
				
      Modifié(e) : Seth DeLand
    
 le 26 Mai 2022
  
			I'd like to add that there is now an easier way to do this with boxchart (added in R2020a) and swarmchart (added in R2020b):
load carsmall MPG   % the sample dataset variable
MPG(:,2)=MPG(:,1).*2;
MPG(:,3)=MPG(:,1).*3;
boxchart(MPG)
hold on
x = repmat(1:3,100,1);  % create the x data needed to overlay the swarmchart on the boxchart
swarmchart(x,MPG,[],'red')
Plus de réponses (2)
  Hassan
      
 le 18 Mai 2019
        Hi, here you can find a one line solution for the jitter like function using the 'undocumented matlab' features.
load carsmall MPG 
figure; 
MPG(:,2)=MPG(:,1).*2;
MPG(:,3)=MPG(:,1).*3;
boxplot(MPG); 
hold on;
x=repmat(1:3,length(MPG),1);
scatter(x(:),MPG(:),'filled','MarkerFaceAlpha',0.6','jitter','on','jitterAmount',0.15);
Best, HM
1 commentaire
  Junru Ruan
 le 13 Déc 2019
				This is the best answer! very nice presentation. 
Tips: if you used group in box plot, do a 'unique' to get the right x axis.
    boxplot(report_table.data,report_table.group_id);
    hold on
    [C, ~, ic]= unique([report_table.group_id],'stable');
    scatter(ic,report_table.data,'filled','MarkerFaceAlpha',0.6','jitter','on','jitterAmount',0.15);
    xlabel('Group ID');
    ylabel('Data');
    hold off
  Ernesto Salcedo
 le 27 Nov 2020
        
      Modifié(e) : Ernesto Salcedo
 le 27 Nov 2020
  
      Boxchart solution for grouped categorical data
Table with random group
count = 20;
T = table(randi(10,count,1), categorical(repmat(["papaya";"silicon"], count/2,1)),'VariableNames',["Recharges","model"])
T.idx = grp2idx(T.model); % convert categories into group indices
Boxchart
figure
hc = boxchart(T.idx, T.Recharges); % group by index
hold on
% overlay the scatter plots
for n=1:max(unique(T.idx))
    hs = scatter(ones(sum(T.idx==n),1) + n-1, T.Recharges(T.idx == n),"filled",'jitter','on','JitterAmount',0.1);
    hs.MarkerFaceAlpha = 0.5;
end
set(gca,"XTick", unique(T.idx),"XTickLabel",categories(T.model))

0 commentaires
Voir également
Catégories
				En savoir plus sur Scatter Plots dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!








