Plot blocks of points with a specific color

4 vues (au cours des 30 derniers jours)
Tiago Dias
Tiago Dias le 26 Nov 2018
Hi,
I got these points and I want to colour every 4 points with a specific color:
x = [ 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5]';
y = [ 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5]';
Point 1:4 yellow, 5:8 blue, 9:12 red, etc, and I want to plot all the 25 entries. the last "block" with just have the row number 25.
I though doing this:
[n,~] = size(x);
block_points = 4;
t_start = 1:block_points:n;
t_end = block_points:block_points:n;
but I got a problem with t_end, only has size 6, while t_start has size 7, due to the last block that only has 1 number.
Thanks for your help
  4 commentaires
madhan ravi
madhan ravi le 28 Nov 2018
Modifié(e) : madhan ravi le 28 Nov 2018
ok so the effort put in order to help is for nothing? Just leave it open just don‘t accept the answer. Post your solution as an answer and accept it.
Tiago Dias
Tiago Dias le 28 Nov 2018
First of all, I did not say that your help was for nothing, I appreatiate the time you spend on my question, like I wrote in the last comment I wrote.
I think I should not accept your answer since, it was not what I looking for, I wanted a more automatic procedure, depending on the variables and not the numbers. I was looking for something that could always work, no matter the X and Y provided, and I was able to acomplish that.
Like I said, thanks for your interest in my question, and the effort that you spent on it.

Connectez-vous pour commenter.

Réponse acceptée

Tiago Dias
Tiago Dias le 28 Nov 2018
This is what I did to solve my question:
from a generic
X = [1:25]';
Y = [1:25]';
I want to plot each number of "rows" to a specific color
[n,m] = size(X);
rows = 3;
columns = ceil(n/rows);
extra_row = columns * rows;
X(n+1:extra_row) = NaN; Y(n+1:extra_row) = NaN;
X_new = reshape(X,rows,columns); Y_new = reshape(Y,rows,columns);
legenda = sprintfc('Mes %d', 1:columns);
for j = 1:size(X_new,2)
plot(X_new(:,j),Y_new(:,j),'*')
hold on
end

Plus de réponses (1)

madhan ravi
madhan ravi le 26 Nov 2018
Modifié(e) : madhan ravi le 26 Nov 2018
EDITED
xx = [ 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5]';
yy = [ 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5]';
x=reshape(xx(1:end-1),4,[]);
y=reshape(yy(1:end-1),4,[]);
s={'-oy','-ob','-or','-og','-om','-oy'};
for i=1:size(x,1)
plot(x(i,:),y(i,:),s{i})
hold on
end
plot(xx(end),yy(end),'ok',...
'markerFaceColor','k')
  9 commentaires
madhan ravi
madhan ravi le 26 Nov 2018
Modifié(e) : madhan ravi le 26 Nov 2018
"I would transform a 26x1 matrix into a 4x7 matrix, with the 2 last entries could be NaN values for example."
matrix=[rand(26,1);zeros(2,1)] %this will do what you want just pad the remaining elements with zeros
Tiago Dias
Tiago Dias le 26 Nov 2018
I am not explaining my self properly, i want it to be automaticly, i created a new topic for this, thanks for your time !

Connectez-vous pour commenter.

Catégories

En savoir plus sur Graphics Objects dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by