Change the colour of individual markers in the plot

조회 수: 15 (최근 30일)
asd ad
asd ad 2020년 8월 17일
댓글: asd ad 2020년 8월 18일
Hello everyone,
I have this code and I would like to individually change the colours of some points on the graph. How can I do this manually?
Thanks
clear all
close all
clc
x1 = linspace(0.974,1.366,9) ;
x2 = linspace(0.929,1.321,11) ;
x3 = linspace(0.848643,1.240643,14);
x4 = linspace(0.779,1.171,18);
x5 = linspace(0.718063,1.110063,22);
x6 = linspace(0.664294,1.056294,26);
x7 = linspace(0.616500,1.008500,28);
x8 = linspace(0.573737,0.965737,29);
x9 = linspace(0.535250,0.927250,28);
x10 = linspace(0.500429,0.892429,26);
x11 = linspace(0.468773,0.860773,22);
x12 = linspace(0.439870,0.831870,18);
x13 = linspace(0.413375,0.805375,14);
x14 = linspace(0.389,0.781,11);
x15 = linspace(0.3665,0.7585,8);
x16 = linspace(0.345667,0.737667,5);
y1 = zeros(size(x1)) ;
y2 = zeros(size(x2)) ;
y3 = zeros(size(x3)) ;
y4 = zeros(size(x4)) ;
y5 = zeros(size(x5)) ;
y6 = zeros(size(x6)) ;
y7 = zeros(size(x7)) ;
y8 = zeros(size(x8)) ;
y9 = zeros(size(x9)) ;
y10 = zeros(size(x10)) ;
y11 = zeros(size(x11)) ;
y12 = zeros(size(x12)) ;
y13 = zeros(size(x13)) ;
y14 = zeros(size(x14)) ;
y15 = zeros(size(x15)) ;
y16 = zeros(size(x16)) ;
plot(x1,y1,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 3)
hold on
plot(x2,y2,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 3.5)
hold on
plot(x3,y3,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 4)
hold on
plot(x4,y4,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 4.5)
hold on
plot(x5,y5,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 5)
hold on
plot(x6,y6,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 5.5)
hold on
plot(x7,y7,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 6)
hold on
plot(x8,y8,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 6.5)
hold on
plot(x9,y9,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 7)
hold on
plot(x10,y10,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 7.5)
hold on
plot(x11,y11,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 8)
hold on
plot(x12,y12,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 8.5)
hold on
plot(x13,y13,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 9)
hold on
plot(x14,y14,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 9.5)
hold on
plot(x15,y15,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 10)
hold on
plot(x16,y16,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 10.5)
hold on
scatter(0,1.7,2000,'filled','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1.5)
text(0,1.7,'1.7m','HorizontalAlignment','Center');
xlabel('Distance (m)')
ylabel('Height (m)')
  댓글 수: 2
jonas
jonas 2020년 8월 17일
a bit off topic, but you need this!
Adam Danz
Adam Danz 2020년 8월 17일
scatter() and gscatter() give you some control over single marker colors.
Alternatively, you can using indexing to plot groups of coordinates that should have different colors.

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

채택된 답변

KSSV
KSSV 2020년 8월 18일
x1 = linspace(0.974,1.366,9) ;
x2 = linspace(0.929,1.321,11) ;
x3 = linspace(0.848643,1.240643,14);
x4 = linspace(0.779,1.171,18);
x5 = linspace(0.718063,1.110063,22);
x6 = linspace(0.664294,1.056294,26);
x7 = linspace(0.616500,1.008500,28);
x8 = linspace(0.573737,0.965737,29);
x9 = linspace(0.535250,0.927250,28);
x10 = linspace(0.500429,0.892429,26);
x11 = linspace(0.468773,0.860773,22);
x12 = linspace(0.439870,0.831870,18);
x13 = linspace(0.413375,0.805375,14);
x14 = linspace(0.389,0.781,11);
x15 = linspace(0.3665,0.7585,8);
x16 = linspace(0.345667,0.737667,5);
y1 = zeros(size(x1)) ;
y2 = zeros(size(x2)) ;
y3 = zeros(size(x3)) ;
y4 = zeros(size(x4)) ;
y5 = zeros(size(x5)) ;
y6 = zeros(size(x6)) ;
y7 = zeros(size(x7)) ;
y8 = zeros(size(x8)) ;
y9 = zeros(size(x9)) ;
y10 = zeros(size(x10)) ;
y11 = zeros(size(x11)) ;
y12 = zeros(size(x12)) ;
y13 = zeros(size(x13)) ;
y14 = zeros(size(x14)) ;
y15 = zeros(size(x15)) ;
y16 = zeros(size(x16)) ;
plot(x1,y1,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 3)
hold on
plot(x2,y2,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 3.5)
hold on
plot(x3,y3,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 4)
hold on
plot(x4,y4,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 4.5)
hold on
plot(x5,y5,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',[0.5843 0.8157 0.9882],...
'LineWidth',1, 'MarkerSize', 5)
hold on
plot(x6,y6,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 5.5)
hold on
plot(x7,y7,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 6)
hold on
plot(x8,y8,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 6.5)
hold on
plot(x9,y9,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 7)
hold on
plot(x10,y10,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 7.5)
hold on
plot(x11,y11,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 8)
hold on
plot(x12,y12,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 8.5)
hold on
plot(x13,y13,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 9)
hold on
plot(x14,y14,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 9.5)
hold on
plot(x15,y15,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 10)
hold on
plot(x16,y16,'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 10.5)
hold on
scatter(0,1.7,2000,'filled','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1.5)
text(0,1.7,'1.7m','HorizontalAlignment','Center');
xlabel('Distance (m)')
ylabel('Height (m)')
  댓글 수: 2
KSSV
KSSV 2020년 8월 18일
You can simplify the code:
L = [0.974,1.366,9
0.929,1.321,11
0.848643,1.240643,14
0.779,1.171,18
0.718063,1.110063,22
0.664294,1.056294,26
0.616500,1.008500,28
0.573737,0.965737,29
0.535250,0.927250,28
0.500429,0.892429,26
0.468773,0.860773,22
0.439870,0.831870,18
0.413375,0.805375,14
0.389,0.781,11
0.3665,0.7585,8
0.345667,0.737667,5] ;
N = size(L,1) ;
x = cell(N,1) ;
for i = 1:N
x{i} = linspace(L(i,1),L(i,2),L(i,3)) ;
end
figure
hold on
for i = 1:N
plot(x{i},zeros(size(x{i})),'o','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1, 'MarkerSize', 10)
end
scatter(0,1.7,2000,'filled','MarkerEdgeColor',[0 0 1],...
'MarkerFaceColor',rand(1,3),...
'LineWidth',1.5)
text(0,1.7,'1.7m','HorizontalAlignment','Center');
xlabel('Distance (m)')
ylabel('Height (m)')
Also read about gscatter. Associate a value to each x{1} and use gscatter.
asd ad
asd ad 2020년 8월 18일
Thanks a lot KSSV. You helped me save a ton of time :)

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by