Filter löschen
Filter löschen

showing empty plot in nexttile or subplot

20 Ansichten (letzte 30 Tage)
Niraj Bal Tamang
Niraj Bal Tamang am 25 Apr. 2022
I have 4 classes:
Class A: x=[0.1 0.2 0.3 0.6 0.24 0.67],y=[2 1 4 7 4 5],type=[a b a c d b]
Class B: empty
Class C: x=[0.24 0.4 0.32 0.5 0.1],y=[3 1 4 2 6], type=[c a d c b]
Class D: x=[0.5 0.2 0.4 0.1 0.2],y=[4 1 5 2 6], type=[d d b a c]
I want to generate a 2rows 2 columns group plot (nexttile or subplot or any other possible way) such that I can have plot of xy values based upon the color from type variable (the color of a particular type should be same for all classes, for eg. if color of a is red in Class A, then it should be red in Class B,C and D). I also want to include empty Class B to show that there is no data distribution in Class B. Can anyone please help me with this. Thank you

Akzeptierte Antwort

Chunru
Chunru am 26 Apr. 2022
a = "r"; b="g"; c="b"; d="m";
x{1}=[0.1 0.2 0.3 0.6 0.24 0.67];
y{1}=[2 1 4 7 4 5];
t{1}=[a b a c d b]
t = 1×1 cell array
{["r" "g" "r" "b" "m" "g"]}
x{2} = [];
y{2} = [];
t{2} = [];
x{3}=[0.24 0.4 0.32 0.5 0.1];
y{3}=[3 1 4 2 6];
t{3}=[c a d c b];
x{4}=[0.5 0.2 0.4 0.1 0.2];
y{4}=[4 1 5 2 6];
t{4}=[d d b a c];
tiledlayout(2, 2);
for i=1:4
nexttile
hold on
for j=1:length(x{i})
plot(x{i}(j), y{i}(j), "Marker", 'o', "MarkerEdgeColor", t{i}(j), "MarkerFaceColor", t{i}(j))
end
hold off
end
  9 Kommentare
Chunru
Chunru am 29 Apr. 2022
Need some tricks to get the legend correct. See above
Niraj Bal Tamang
Niraj Bal Tamang am 30 Apr. 2022
Thanks a lot. Yeah, it does seems trickier. I am sorry to say but I think it is still not giving the correct plot. The names seem to get mixed up during concatenation while generating the tall variable. And the x,y value seems to be linked with the random names within tall variable. I have attached the edited x, y and t variables here again after correcting from your first comment. To verify the code, I ran it in these variables but in the first plot with single point, the x and y values are correctly plotted but the name is not matching (It is showing the color of Wairau instead of Conway).

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Niraj Bal Tamang
Niraj Bal Tamang am 3 Mai 2022
Thanks a lot. I finally got the plot. I removed the = sign from if j>=length(t{i}) line to if j>length(t{i}) and it worked.
for j=1:length(x{i})
if j>length(t{i}) % this is not necessary if t{i} has enough entries
mc = ntypes; % use last color
else
mc = find(t{i}(j)==ut);
end
%mc = find(t{i}(j)==ut);

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by