Legend entries all same color in Matlab 2015b
Mostrar comentarios más antiguos
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 comentarios
Star Strider
el 14 de Sept. de 2015
Definitely a bug. Nothing I tried (specifying colours and markers, returning handles and sending them to legend as arguments) alters what you saw. Since you discovered it, report it as a bug to TMW Tech Support.
the cyclist
el 14 de Sept. de 2015
Agree on bug report suggestion. This code works properly for me in 2015a, and not 2015b.
Talfan Evans
el 4 de Jul. de 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
el 16 de Feb. de 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');
Respuesta aceptada
Más respuestas (4)
Jacob Kamminga
el 28 de Jun. de 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');
1 comentario
Alexandre Damião
el 8 de En. de 2017
Very nice! This worked perfectly for me. Thanks!
Tony L.
el 15 de Sept. de 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
el 1 de Mzo. de 2016
0 votos
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?
1 comentario
Walter Roberson
el 2 de Mzo. de 2016
Are you using R2015a? If so then apply the patch Mike indicated.
Amir Mohammad Alizadeh
el 25 de Mayo de 2016
0 votos
and the bloody doesn't work. MATLAB is horrible
1 comentario
Walter Roberson
el 9 de En. de 2017
Which MATLAB version are you using? Did you apply the patch?
Categorías
Más información sobre Scatter Plots en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!