Using Variable in Legend in for loop
조회 수: 1 (최근 30일)
이전 댓글 표시
I want to use variable in legend in a scatter plot. I found similar questions about variable in legend. However, they are not in a for loop. I need it in a for loop. How can I do this? My code is :
close all;clear all; clc;
x=-20:5:20;
y=-20:5:20;
z=40:5:80;
[X,Y,Z]=meshgrid(x,y,z)
h=0;
for i=1:1:length(x)
for j=1:1:length(y)
for k=1:1:length(z)
h=h+1
M(h,:)=[X(i,j,k), Y(i,j,k), Z(i,j,k)];
N(h)=bul_poz_real_cozum_sayisi([M(h,1); M(h,2); M(h,3) ],[0;0;0]);
end
end
end
NN = unique(N); NN_length=length(NN);
BB = unique(B); BB_length=length(BB);
S=[10 10 20 20 30 ];
figure; hold on;
for i = 1:NN_length
NNN = (N == NN(i)); % Without FIND: faster logical indexing
scatter3(M(NNN, 1), M(NNN, 2), M(NNN, 3), S(i),'filled');hold on;
str = {strcat( num2str(NN(i)), 'Solutions')};
legend(str{:})
end
xlim([x(1),x(end)]);ylim([y(1),y(end)]);zlim([z(1),z(end)]);
axis equal; grid on;rotate3d;view(3);
It only writes the last legend, and deletes the preious legend. NN=[4 6 8 10 12]. So the legend should be like this:
- 4 Solutions
- 6 Solutions
- 8 Solutions
- 10 Solutions
- 12 Solutions
댓글 수: 0
답변 (1개)
Srivardhan Gadila
2021년 2월 10일
You can make use of the 'DisplayName' name value pair argument as follows:
x = 1:4;
figure
hold on
for i=1:4
z = linspace(0,4*pi,250)/i;
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
scatter3(x,y,z,'filled','DisplayName',num2str(i))
end
legend
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Legend에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!