Azzera filtri
Azzera filtri

Legend entries all same color in Matlab 2015b

6 visualizzazioni (ultimi 30 giorni)
I just updated to Matlab 2015b, and the frustration has already begun.
I am making a simple scatter plot with multiple data sets. Each data set has a different color, but the legend shows points all in the same color. Example code showing problem below: (ONLY IN 2015b)
---------------
x = 1:1:100;
y1 = rand(1,100);
y2 = rand(1,100);
y3 = rand(1,100);
figure;
scatter(x,y1);
hold on;
scatter(x,y2,'*');
scatter(x,y3);
legend('random 1','random 2','random 3') ;
---------------
The different symbol choice on 'random 2' illustrates that the problem is only with color, and not with referencing the same handle for each.
Help much appreciated!
Maddie
  4 Commenti
Talfan Evans
Talfan Evans il 4 Lug 2016
Also found this bug. Easy to use the plot command but specify the marker type, i.e:
scatter(x,y,'r')
produces the same output as:
plot(x,y,'or')
The bug doesn't seem to affect the plot command.
joebob
joebob il 16 Feb 2017
Hello, found a way to show the color in the legend by forcing the `MarkerFaceColor` property:
h = scatter(x_data, y_data, area_data, 'green', 'filled', 'MarkerFaceColor', 'green');

Accedi per commentare.

Risposta accettata

Mike Garrity
Mike Garrity il 15 Set 2015
That sounds like bug 1283854. There's a patch and some workarounds at that link.
  2 Commenti
Madison Smith
Madison Smith il 15 Set 2015
That is exactly it. Thanks so much!
lis coffey
lis coffey il 4 Lug 2016
i guess the problem is only with color, and not with referencing the same handle for each. Thanks \ Qwikfix \

Accedi per commentare.

Più risposte (4)

Jacob Kamminga
Jacob Kamminga il 28 Giu 2016
From the bugreport, Use this workaround when the points within each scatter plot are different colors:
Call the legend function with two or more output arguments:
s1 = scatter(1:10,1:10,[],1:10);
hold on
s2 = scatter(2:11,1:10,[],26:35);
[h, ~] = legend('show');

Tony L.
Tony L. il 15 Set 2015
There must be a cleaner way to do this than the below, but gscatter seems to do the right thing:
x = 1:1:100;
y1 = rand(1,100);
y2 = rand(1,100);
y3 = rand(1,100);
g1 = repmat(1,length(y1),1);
g2 = repmat(2,length(y2),1);
g3 = repmat(3,length(y3),1);
ds = [x', y1', g1; x', y2', g2; x', y3', g3];
figure;
gscatter(ds(:,1), ds(:,2), ds(:,3));
legend('random 1','random 2','random 3') ;

SHR
SHR il 1 Mar 2016
I have a similar issue. My data set is a table with multiple variables over time associated with specific locations. I wanted to graph all variables (y axis) over time on one scatter plot only for one location. Thus I converted the dates to DateNumebers and restricted the variables by location e.g., Y1-Znppm(SiteCat=='location_x'. The legend has the same symbol color. Is there an easier way to circumvent the bug?

Amir Mohammad Alizadeh
Amir Mohammad Alizadeh il 25 Mag 2016
and the bloody doesn't work. MATLAB is horrible

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by