matlab - 如何在for循环后在图中插入图例
问题描述
我在 MATLAB 的 3D 图中插入图例时遇到问题。我有一个数据列表,特别是我有一个nx3
填充了要绘制的数据的矩阵,我想通过应用阈值来分离这些数据。
在我的情况下,阈值是一个时间,因此如果第i
th 个数据低于阈值时间,它将以蓝色绘制,否则以红色绘制。
代码是
figure(1)
plot3(ra(1),dec(1),Time2plot(1),'*','Color','r', 'DisplayName', 'observation day');
hold on;
plot3(ra(end),dec(end),Time2plot(end),'*','Color','b','DisplayName', 'next day');
legend show;
for i = 1:length(Time2plot)
if timeofday(Time2plot(i)) > B(1) && timeofday(Time2plot(i)) < B(2)
hold on;
plot3(ra(i),dec(i),Time2plot(i),'*','Color', 'b');
else
hold on;
plot3(ra(i),dec(i),Time2plot(i),'*','Color','r');
end
end
hold on;
title(['RA Dec in 3D ', date(1,1)]);
xlabel('RA');
ylabel('Dec');
zlabel('Time');
ztickformat('HH:mm:ss');
grid on;
我希望图例中只有两行:“第二天”和“观察日”,而不是所有数据。
解决方案
如果您的图形已经有图例,并且您legend
再次使用 - 命令,旧的图例将被覆盖。因此,在您的情况下,您应该能够执行以下操作:
legend('observation day','next day');
只需将此行附加到您的代码中,您就会得到一个包含两个条目的图例。
当您要保留的图例条目不是前两个时,情况变得有点棘手。在这种情况下,您首先必须置换Children
轴对象的 ,以便它们成为第一个条目。让我们假设'observation day'
是您的传奇的第 3 个条目和'next day'
第 4 个条目。在这种情况下,您需要在应用新图例之前执行以下操作:
h=gca;
h.Children=h.Children([(3:4).';(1:2).';(5:length(h.Children)).'])
推荐阅读
- php - 如何修复 Visual Studio Code 中的“错误:生成 php ENOENT”?
- amazon-web-services - EB CLI 在应用程序根目录中找不到 Dockerfile 或 Dockerrun.aws.json 文件
- core-data - performFetch 创建具有太多数据的可区分数据源快照
- function - Pyspark - 在两个字符串列上合并导致错误 - 无法转换为结构
- vue.js - 通过槽向子组件添加多个组件
- rust - 如果我在调用 present 之前更改画布的 vew_port,为什么会有旧图像闪烁?
- node.js - ReferenceError: _id 未定义
- android - RecyclerView 包装了它的内容
- javascript - 如何在 Microsoft Playwright 中创建自动化 API 测试?
- c++ - 如何在 C++ 中使用类和对象重载 << 运算符