Update scatter plot with different colors set by the user
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
susana
am 15 Sep. 2017
Kommentiert: susana
am 20 Sep. 2017
Hello,
I have a Gui that is plotting a scatter data into an axes. I want to be able to update the scatter with different colors by a depth condition (minfm, maxfm). The code is as follows:
scatter=findobj(eixo.Children,'type','Scatter');
minfm=[1000;2500];
maxfm=[2000;4000];
color={'blue';'green'};
[l,~]=size(scatter.YData);
[lin,~]=size(color);
V=repmat({'black'},1,l);
for i=1:lin
for j=1:l
if Y(j)>minfm(i) && Y(j)<maxfm(i)
V{:,j}=color{i,1};
end
end
end
set(scatter,'MarkerFaceColor',V{:});
I get the following error:
Error using matlab.graphics.chart.primitive.Scatter/set
There is no green property on the Scatter class.
The vector is ok, but I always get this error and it only plots everything in green
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 15 Sep. 2017
Bearbeitet: Walter Roberson
am 15 Sep. 2017
scatter=findobj(eixo.Children,'type','Scatter');
minfm=[1000;2500];
maxfm=[2000;4000];
color = [0 0 1; 0 1 0]; %{'blue';'green'};
[l,~]=size(scatter.YData);
[lin,~]=size(color);
V=repmat([0 0 0],l,1); %{'black'}
for i=1:lin
for j=1:l
if Y(j)>minfm(i) && Y(j)<maxfm(i)
V(j,:)=color(i,:);
end
end
end
set(scatter,'MarkerFaceColor',V);
It looks to me as if you should be able to condense that quite a lot.
color = [0 0 0; 0 0 1; 0 1 0];
Vidx = 1 + (Y > minfm(1) & Y < maxfm(1)) * 1 + (Y > minfm(2) & Y < maxfm(2)) * 2; %assume the ranges are mutually exclusive
V = color(Vidx(:), :);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Scatter Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!