使用for循环创建的绘图单元格中的Matlab图例
我想在Matlab中创建一个图例,在下面的伪代码中使用名为labels的单元格。我已经阅读了本论坛的手册和帖子,其中建议使用图例(标签{:})-但它仍然只显示最后一个图例条目。图例(‘显示’)显示所有条目,但不使用标签中定义的正确名称。我做错了什么使用for循环创建的绘图单元格中的Matlab图例,matlab,for-loop,plot,legend,cell-array,Matlab,For Loop,Plot,Legend,Cell Array,我想在Matlab中创建一个图例,在下面的伪代码中使用名为labels的单元格。我已经阅读了本论坛的手册和帖子,其中建议使用图例(标签{:})-但它仍然只显示最后一个图例条目。图例(‘显示’)显示所有条目,但不使用标签中定义的正确名称。我做错了什么 clc; clear; close all; format long; data = cell(4,2); for number = 1:2 data{1,number} = [1 3 5]; data{2,number} =
clc;
clear;
close all;
format long;
data = cell(4,2);
for number = 1:2
data{1,number} = [1 3 5];
data{2,number} = [4 2 9];
data{3,number} = [2 7 3];
data{4,number} = [7 4 2];
end
labels = cell(4,2);
for number = 1:2
labels{1,number} = {strcat(string(number), ': legend entry 1')};
labels{2,number} = {strcat(string(number), ': legend entry 2')};
labels{3,number} = {strcat(string(number), ': legend entry 3')};
labels{4,number} = {strcat(string(number), ': legend entry 4')};
end
x = 1:3;
figure;
hold on;
for i = 1:numel(data)
plot(x, data{i},'-o','LineWidth',1.1);
end
hold off;
legend(labels{:});
% legend('show');
xlim([0.5 3+0.5]);
ylim([0 10]);
set(gca, 'xTick', 1:3, 'yTick', 0:1:10 );
ytickformat('percentage');
xlabel('Scenarios');
只要这样做:
labels{1,number} = strcat(string(number), ': legend entry 1');
labels{2,number} = strcat(string(number), ': legend entry 2');
labels{3,number} = strcat(string(number), ': legend entry 3');
labels{4,number} = strcat(string(number), ': legend entry 4');
因为否则您将在单元格内创建单元格,并且它们必须是单元格内的字符串
clc;
clear;
close all;
format long;
data = cell(4,2);
for number = 1:2
data{1,number} = [1 3 5];
data{2,number} = [4 2 9];
data{3,number} = [2 7 3];
data{4,number} = [7 4 2];
end
labels = cell(4,2);
for number = 1:2
labels{1,number} = strcat(string(number), ': legend entry 1');
labels{2,number} = strcat(string(number), ': legend entry 2');
labels{3,number} = strcat(string(number), ': legend entry 3');
labels{4,number} = strcat(string(number), ': legend entry 4');
end
x = 1:3;
figure;
hold on;
for i = 1:numel(data)
plot(x, data{i},'-o','LineWidth',1.1);
end
hold off;
legend(labels{:});
% legend('show');
xlim([0.5 3+0.5]);
ylim([0 10]);
set(gca, 'xTick', 1:3, 'yTick', 0:1:10 );
ytickformat('percentage');
xlabel('Scenarios');
现在是正确的。
数字输出:
只要这样做:
labels{1,number} = strcat(string(number), ': legend entry 1');
labels{2,number} = strcat(string(number), ': legend entry 2');
labels{3,number} = strcat(string(number), ': legend entry 3');
labels{4,number} = strcat(string(number), ': legend entry 4');
因为否则您将在单元格内创建单元格,并且它们必须是单元格内的字符串
clc;
clear;
close all;
format long;
data = cell(4,2);
for number = 1:2
data{1,number} = [1 3 5];
data{2,number} = [4 2 9];
data{3,number} = [2 7 3];
data{4,number} = [7 4 2];
end
labels = cell(4,2);
for number = 1:2
labels{1,number} = strcat(string(number), ': legend entry 1');
labels{2,number} = strcat(string(number), ': legend entry 2');
labels{3,number} = strcat(string(number), ': legend entry 3');
labels{4,number} = strcat(string(number), ': legend entry 4');
end
x = 1:3;
figure;
hold on;
for i = 1:numel(data)
plot(x, data{i},'-o','LineWidth',1.1);
end
hold off;
legend(labels{:});
% legend('show');
xlim([0.5 3+0.5]);
ylim([0 10]);
set(gca, 'xTick', 1:3, 'yTick', 0:1:10 );
ytickformat('percentage');
xlabel('Scenarios');
现在是正确的。
数字输出:
标签变量是一个4x2单元格数组。您希望使用哪种图例?您的labels变量是4x2单元格数组。你期待什么样的传奇?