How can I weight the marker size in gscatter?

20 Ansichten (letzte 30 Tage)
Christian
Christian am 11 Okt. 2016
Kommentiert: Christian am 13 Okt. 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.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 11 Okt. 2016
Bearbeitet: Walter Roberson am 11 Okt. 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 Kommentare
Christian
Christian am 13 Okt. 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 am 13 Okt. 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'});

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by