# Creating a legend inside a loop, using sprintf

조회 수: 89(최근 30일)
positron96 2018년 5월 27일
댓글: Jan 2018년 7월 22일
I am trying to make a legend for a plot with 'beta' number of curves. Basically, beta would be beta = [1 : 5] if I decided to have five curves, but it can be any number. I want to make a legend for that number of curves, and specifically do this by using a for loop (I know there are other ways that don't need for loops but I want to use a for loop for this one specifically). The code that I have (below) just gives me a legend for one curve "beta=1beta=2beta=3beta=4beta=5". I would need a legend for five curves. Basically the first curve would be beta = 1, the second curve would be beta = 2, and so on. Can someone help me?
for beta_val = beta
plot(time, y);
hold on
lgd = sprintf('beta = %0.0f', beta);
legend(lgd);
end

댓글을 달려면 로그인하십시오.

### 채택된 답변

Star Strider 2018년 5월 28일
Try something like this:
time = linspace(0, 2*pi); % Create Data
beta = 1:5; % Create Data
y = sin(time(:)*beta); % Create Data
for beta_val = beta
plot(time, y(:,beta_val));
hold on
lgd{beta_val} = sprintf('beta = %0.0f', beta(beta_val));
end
legend(lgd);
##### 댓글 수: 6표시숨기기 이전 댓글 수: 5
Jan 2018년 5월 28일
If this works, you can omit the loop:
plot(time, y);
lgd{beta_val} = sprintfc('beta = %0.0f', beta);
legend(lgd, 'Location','N')

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Kai Åsvik 2018년 7월 22일
I am getting this error message: "Function 'subsindex' is not defined for values of class 'cell'."
##### 댓글 수: 1표시숨기기 없음
Jan 2018년 7월 22일
@Kai: The problem is solved already and the readers cannot guess, which code causes your problem. Please open a new thread and include the code and the complete error message.

댓글을 달려면 로그인하십시오.

### 범주

Find more on Legend in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by