How can I weight the marker size in gscatter?

12 vues (au cours des 30 derniers jours)
Christian
Christian le 11 Oct 2016
Commenté : Christian le 13 Oct 2016
Hello,
I'm using gscatter to plot data by group. I have two vectors of size 100x1 that contain the x and y value, called x and y. I also have a vector of the same size, w, that contains weights. Now, I'd like to weigh the scatter dots by this matrix w. I tried something like
h = gscatter(x,y,gr,linspecer(length(b)-1),'.',30);
h.MarkerSize = w*30;
but it looks like Matlab only accepts a scalar for the marker size.
Thanks for your help.

Réponse acceptée

Walter Roberson
Walter Roberson le 11 Oct 2016
Modifié(e) : Walter Roberson le 11 Oct 2016
gscatter() creates lines, and lines can only have one marker size per line.
Consider using multiple scatter() calls instead, one per group (because scatter can only handle one marker shape per call)
  2 commentaires
Christian
Christian le 13 Oct 2016
Thanks, Walter. I wonder how I can then add the legend.
markersize = 30;
Col = linspecer(3);
hold on
for c = 1:3
scatter(x(gr==c),y(gr==c),markersize*w(gr==c),'MarkerEdgeColor',Col(c,:));
end
hold off
legend({'Gr1','Gr2','Gr3'});
This clearly doesn't work. It only gives me an empty framed box. Thanks for your ideas.
Christian
Christian le 13 Oct 2016
I got it to work.
markersize = 30;
Col = linspecer(3);
h = [];
hold on
for c = 1:3
h = [h scatter(x(gr==c),y(gr==c),markersize*w(gr==c),'MarkerEdgeColor',Col(c,:))];
end
hold off
legend(h,{'Gr1','Gr2','Gr3'});

Connectez-vous pour commenter.

Plus de réponses (0)

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!

Translated by