Legend entries all same color in Matlab 2015b

조회 수: 9 (최근 30일)
Madison Smith
Madison Smith 2015년 9월 14일
댓글: joebob 2017년 2월 16일
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
Talfan Evans
Talfan Evans 2016년 7월 4일
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 2017년 2월 16일
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');

댓글을 달려면 로그인하십시오.

채택된 답변

Mike Garrity
Mike Garrity 2015년 9월 15일
That sounds like bug 1283854. There's a patch and some workarounds at that link.
  댓글 수: 2
Madison Smith
Madison Smith 2015년 9월 15일
That is exactly it. Thanks so much!
lis coffey
lis coffey 2016년 7월 4일
i guess the problem is only with color, and not with referencing the same handle for each. Thanks \ Qwikfix \

댓글을 달려면 로그인하십시오.

추가 답변 (4개)

Jacob Kamminga
Jacob Kamminga 2016년 6월 28일
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
Alexandre Damião
Alexandre Damião 2017년 1월 8일
Very nice! This worked perfectly for me. Thanks!

댓글을 달려면 로그인하십시오.


Tony L.
Tony L. 2015년 9월 15일
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 2016년 3월 1일
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
Walter Roberson
Walter Roberson 2016년 3월 2일
Are you using R2015a? If so then apply the patch Mike indicated.

댓글을 달려면 로그인하십시오.


Amir Mohammad Alizadeh
Amir Mohammad Alizadeh 2016년 5월 25일
and the bloody doesn't work. MATLAB is horrible
  댓글 수: 1
Walter Roberson
Walter Roberson 2017년 1월 9일
Which MATLAB version are you using? Did you apply the patch?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Distribution Plots에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by