matlab - 来自单元格的 Matlab 图例,用于使用 for 循环创建的绘图
问题描述
我想在下面的虚拟代码中使用名为标签的单元格在 Matlab 中创建一个图例。我已阅读此论坛中的手册和帖子,建议使用 legend(labels{:}) - 但它仍然只显示最后一个图例条目。legend('show') 显示所有条目,但未使用标签中定义的正确名称。我做错了什么?
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');
现在是正确的。
图输出:
推荐阅读
- date - SSRS 中的财政年度自日期起
- angular - 如何设置特定年份的角度指令?
- javascript - 404 未找到页面 - reactjs
- java - 缩放大图像的最佳方法
- jenkins - docker 镜像在没有 dockerhub.com 的情况下部署和在 Jenkins 中使用的可行性
- javascript - 为空时如何在datalist中隐藏下拉列表
- javascript - Object.prototype.toString.call() 是一个安全问题吗?
- javascript - 获取用于复制和粘贴的特定于操作系统的键盘快捷键
- ruby-on-rails - Rails 嵌套属性会破坏一些子属性并更新一些其他属性
- java - Beansheel 采样器在执行后没有停止