How to plot number of a matrix with colorcode?

1 visualizzazione (ultimi 30 giorni)
AS
AS il 16 Dic 2021
Commentato: AS il 16 Dic 2021
A matrix with dimension 2193 * 2, where 1st column is depth and 2nd column is number ( 1 to 6). I want to plot these number with specific color like 1 is green, 2 is black, 3 is cyan, 4 is red, 5 is blue, and 6 is yellow. How to plot it with specific color against depth. Please, help me with useful information. thanks
  2 Commenti
DGM
DGM il 16 Dic 2021
Modificato: DGM il 16 Dic 2021
What exactly do you want? When you say "plot it with specific color against depth", you realize that the result for each category will be constant-valued, right?
A = xlsread('Book1.xlsx');
scatter(A(:,1),A(:,2),10,A(:,2))
cmap = [0 1 0; 0 0 0; 0 1 1; 1 0 0; 0 0 1; 1 1 0];
colormap(cmap)
I'm assuming you want something other than this. Maybe something like this?
figure;
A = xlsread('Book1.xlsx');
idx = 1:size(A,1);
uv = unique(A(:,2));
hold on
for k = 1:numel(uv)
mask = A(:,2) == uv(k);
plot(idx(mask),A(mask,1),'o');
end
cmap = [0 1 0; 0 0 0; 0 1 1; 1 0 0; 0 0 1; 1 1 0];
set(gca,'colororder',cmap)
Not that I think that's particularly readable either.
AS
AS il 16 Dic 2021
thank you for your answer. But I want to plot these number with depth value (1st column). Depth will be in Y-axis. And the numbers will be plotted as color.

Accedi per commentare.

Risposta accettata

DGM
DGM il 16 Dic 2021
Modificato: DGM il 16 Dic 2021
You can use pcolor()
A = xlsread('Book1.xlsx');
w = 100;
h = pcolor(1:w,A(:,1),repmat(A(:,2),[1 w]));
set(h,'edgecolor','none')
set(gca,'ydir','reverse','xticklabel',{})
axis equal
xlim([1 w])
cmap = [0 1 0; 0 0 0; 0 1 1; 1 0 0; 0 0 1; 1 1 0];
colormap(cmap)
Something like that?
  3 Commenti
DGM
DGM il 16 Dic 2021
w sets the width of the plot box in data units. You can adjust it to make the plot wider or narrower.
AS
AS il 16 Dic 2021
thank you. Understood.

Accedi per commentare.

Più risposte (3)

Walter Roberson
Walter Roberson il 16 Dic 2021
Modificato: Walter Roberson il 16 Dic 2021
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/835655/Book1.xlsx';
A = readmatrix(filename);
N = size(A,1);
pointsize = 25;
cmap = [0 1 0; 0 0 0; 0 1 1; 1 0 0; 0 0 1; 1 1 0];
scatter(1:N, A(:,1), pointsize, A(:,2));
colormap(cmap);
colorbar()
ylabel('Depth')
xlabel('row number')
scatter(A(:,2), A(:,1), pointsize, A(:,2))
colormap(cmap)
xlabel('category')
ylabel('Depth')
boxplot(A(:,1), A(:,2))
xlabel('category')
ylabel('depth')

DGM
DGM il 16 Dic 2021
Modificato: DGM il 16 Dic 2021
Here's my latest guess:
A = xlsread('Book1.xlsx');
uv = unique(A(:,2));
hold on
for k = 1:numel(uv)
mask = A(:,2) == uv(k);
plot(A(mask,1));
end
cmap = [0 1 0; 0 0 0; 0 1 1; 1 0 0; 0 0 1; 1 1 0];
set(gca,'colororder',cmap)
ylabel('depth')
xlabel('sample number')
Here, depth is plotted against the number of each sample in the respective categories. If depth is plotted against the sample number across all categories (i.e. the row subscript), then the result is the same as Walter's first example and the second example I gave.

AS
AS il 16 Dic 2021
Thanks everyone for your responses. But, I want to plot it using imagesc coomand. I have plotted it and unable to mention specific colorcode of mine. Like ike 1 is green, 2 is black, 3 is cyan, 4 is red, 5 is blue, and 6 is yellow. Kindly, help me to sove this.

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by