Plot RGB triplets from a matrix as markers 'o'

15 visualizaciones (últimos 30 días)
Stylianos
Stylianos el 7 de Feb. de 2025
Comentada: Stylianos el 10 de Feb. de 2025
I have a matrix B 6-by-3. I want using a for loop to plot six different coloured markers 'o' in the same figure and in one line (y=0).
Each row has 3 elements of 0 and 1 representing RGB triplet colors.
My code is:
% Define axis limits
x = linspace(0,10,10);
y = linspace(0,10,10);
xlabel('X-axis');
ylabel('Y-axis');
axis([0 10 0 10]);
B =[1 0 0
0 1 0
1 0 1
0 1 1
0 0 1
0 0 1];
for k=1:6
VW = B(k,:);
plot((VW),'o','LineWidth',5);
hold on
end
hold off
I get the following figure with wrong colors
Any help is appreciated.
Thanks a lot.
Stelios Kas.

Respuestas (2)

Cris LaPierre
Cris LaPierre el 7 de Feb. de 2025
Editada: Cris LaPierre el 7 de Feb. de 2025
Your plot command is adding 3 points each time. Try this. It specifies a unique x location for each row of C, and colors the marker using the RGB combo for that row. Y=0 for all 6 points.
Note that the order of your commands matters when formatting the appearance of the figure, since calling plot with the syntax you use creates a new axis.
% Define axis limits
C =[1 0 0
0 1 0
1 0 1
0 1 1
0 0 1
0 0 1];
scatter(1:size(C,1),0,[],C,'filled');
xlabel('X-axis');
ylabel('Y-axis');
axis([0 10 0 10]);
  3 comentarios
Cris LaPierre
Cris LaPierre el 7 de Feb. de 2025
Ah, you are probably using a slighly older version of MATLAB. Here's updated code.
% Define axis limits
C =[1 0 0
0 1 0
1 0 1
0 1 1
0 0 1
0 0 1];
scatter(1:size(C,1),zeros(1,size(C,1)),[],C,'filled');
xlabel('X-axis');
ylabel('Y-axis');
axis([0 10 0 10]);
Stylianos
Stylianos el 7 de Feb. de 2025
Thank you very much Chris.
Now it works, I use Matlab 2019b.
Much obliged.
Stelios Kas

Iniciar sesión para comentar.


Fangjun Jiang
Fangjun Jiang el 7 de Feb. de 2025
Editada: Fangjun Jiang el 7 de Feb. de 2025
Use 'color' to specify color in plot()
x = linspace(0,10,10);
y = linspace(0,10,10);
xlabel('X-axis');
ylabel('Y-axis');
axis([0 10 0 10]);
B =[1 0 0
0 1 0
1 0 1
0 1 1
0 0 1
0 0 1];
for k=1:6
VW = B(k,:);
plot((VW),'o','LineWidth',5,'color',VW);
hold on
end
hold off
  3 comentarios
Fangjun Jiang
Fangjun Jiang el 7 de Feb. de 2025
Yes. I only provided answer regarding 'color'. Didn't pay attention to what needs to be plotted. Can still use plot() to do it.
axis([0 10 0 10]);
B =[1 0 0
0 1 0
1 0 1
0 1 1
0 0 1
0 0 1];
for k=1:6
VW = B(k,:);
plot(k,0,'o','LineWidth',5,'color',VW);
hold on
end
Stylianos
Stylianos el 10 de Feb. de 2025
Dear Jiang.
The code works fine.
Thank you very much.
Much obliged.
Stelios Kas

Iniciar sesión para comentar.

Categorías

Más información sobre Polar Plots en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by