凡例をforループにより複数作成し,グラフに反映させたい
45 次查看(过去 30 天)
显示 更早的评论
下記コードにおいて横軸にX、縦軸にyの1~4列を取った場合の4種類のグラフを1つのグラフに表示させると同時に,小さい順に500nm,750nm,1000nm,1250nmといった名前の凡例をforループにより表示させたいです。しかし現状は添付のように凡例が表示されておりません。お手数をおかけしますがこのコードの作成例をご教授願いたいです。よろしくお願いいたします。
clear;
x=0:2:20;
X=x(:);
y=zeros(length(X),4);
for i=1:length(x)
y(i,1)=2*X(i,1);
y(i,2)=3*X(i,1);
y(i,3)=4*X(i,1);
y(i,4)=5*X(i,1);
end
for k=1:4
plot(X,y(:,k))
formatspec="%d%s";
A1=500+250*(k-1);
A2='nm';
hanrei=sprintf(formatspec,A1,A2);
legend(hanrei)
hold on
end
hold off
0 个评论
采纳的回答
Hernia Baby
2023-1-30
なるべくコンパクトにしました
clear,clc,close all;
アポストロフィ( ' )で縦にできます
X=(0:2:20)';
行列を作成します
n = 4;
y = (2:n+1).*X;
%{
以下のループと同じ
y=zeros(length(X),n);
for jj = 1:n
y(:,jj)=(jj+1)*X;
end
%}
図示します
ここだけは for ループにしました
Displayname オプションを使い、最後にlegendで一気に表示します
figure
hold on
for kk = 1:n
num = 500+250*(kk-1);
txt = [num2str(num),'nm'];
plot(X,y(:,kk),'Displayname',txt)
end
hold off
legend show
更多回答(2 个)
交感神経優位なあかべぇ
2023-1-30
DisplayNameを使用した凡例の記述方法の例も記載しておきます。
clear;
x=0:2:20;
X=x(:);
y=zeros(length(X),4);
for i=1:length(x)
y(i,1)=2*X(i,1);
y(i,2)=3*X(i,1);
y(i,3)=4*X(i,1);
y(i,4)=5*X(i,1);
end
for k=1:4
formatspec="%d%s";
A1=500+250*(k-1);
A2='nm';
hanrei=sprintf(formatspec,A1,A2);
plot(X,y(:,k),'DisplayName',hanrei);
hold on
end
legend;
hold off
Atsushi Ueno
2023-1-30
编辑:Atsushi Ueno
2023-1-30
clear;
x=0:2:20;
X=x(:);
y=zeros(length(X),4);
for i=1:length(x)
y(i,1)=2*X(i,1);
y(i,2)=3*X(i,1);
y(i,3)=4*X(i,1);
y(i,4)=5*X(i,1);
end
for k=1:4
plot(X,y(:,k))
formatspec="%d%s";
A1=500+250*(k-1);
A2='nm';
hanrei=sprintf(formatspec,A1,A2);
if k == 1 % 追記ここから
h = legend(hanrei); % 最初だけ凡例を追加。残りはこの凡例に文字列を追加していく
else
str = get(h,'String'); % 凡例の文字列をゲット
str{end} = hanrei; % 追加分(デフォルト名'data1'等)を変更
set(h,'String',str); % 凡例の文字列をセット
end % 追記ここまで
hold on
end
hold off
1 个评论
Atsushi Ueno
2023-1-30
移动:Atsushi Ueno
2023-1-30
既存の凡例に新たな項目を追加するのはちょっとやっかいなんです。まとめて1回で描画するなら簡単です。
x = (0:2:20)';
y = repmat(x,[1,4]).*[2 3 4 5];
plot(x,y);
A1 = 500:250:1250;
A2 = 'nm';
hanrei = [num2str(A1') repmat(A2,[4,1])]
legend(hanrei);
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!