Adding a scatter of points to a boxplot
    115 次查看(过去 30 天)
  
       显示 更早的评论
    
Does anyone come with with a code which can match the python generated boxplot?
1 个评论
  dpb
      
      
 2018-4-29
				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...
采纳的回答
  dpb
      
      
 2018-4-29
        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 个评论
  Rubina Chandnani
 2021-7-22
				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
    
 2022-5-26
				
      编辑:Seth DeLand
    
 2022-5-26
  
			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')
更多回答(2 个)
  Hassan
      
 2019-5-18
        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 个评论
  Junru Ruan
 2019-12-13
				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
 2020-11-27
        
      编辑:Ernesto Salcedo
 2020-11-27
  
      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 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Scatter Plots 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!








