首页 > 解决方案 > 默认的“图例”功能被意外覆盖

问题描述

我正在使用 BNT-toolbox,这是一个用 matlab 编写的大型库,用于在贝叶斯网络中进行推理。

我不得不将此工具箱添加到 MATLAB 的路径中。但是在这样做之后,我不能再使用默认legend功能了。

我认为这个库可能有他自己的legend功能,覆盖了默认的。如何手动告诉 MATLAB 我想要原始工具箱而不是新工具箱中的工具箱?

在 Matlab 2018b 和 2020a 中尝试过

编辑:重现它:

当我运行测试脚本时,它会显示线条和图例。

https://github.com/bayesnet/bnt,这就是我说的工具箱。我下载了它,解压缩,然后使用Home -> Set path -> add folder with subfolder添加到我的路径中

当我现在运行脚本时,它显示的是线条而不是图例。

注意:当我尝试另一种绘图方式时(参见 testscript 2),图例再次显示出来。所以这是一个有效的“解决方法”

Testscript1:(位置:C:\Users\TomDe\Downloads\FullBNT-1.0.7\bnt\own\testscript1.m)

x = linspace(0,pi);
y1 = cos(x);
plot(x,y1)

hold on 
y2 = cos(2*x);
plot(x,y2)

legend('cos(x)','cos(2x)')

测试脚本2

% Some other code

tiledlayout(2,1) 
nexttile
plot(inputPath)
hold on
plot(sensorPath)
plot(inputInference)
hold off
title('The Input sequence and sensor readings  ')
legend('Path', 'sensor', 'Inference')

标签: matlabpath

解决方案


您可以使用which函数检查是否确实如此:

>> which legend -all

掩盖 MATLAB 自己的函数通常是个坏主意。我强烈建议你首先避免这个问题。创建一个MATLAB 包并将此工具箱的源代码放入其中。


仅出于演示目的,我将展示如何调用 real legend.m

>> wd = pwd;
>> cd 'C:\Program Files\MATLAB\R2020a\toolbox\matlab\scribe\'
>> legend(...)
>> cd(wd);

这是 MATLAB R2020a 安装中文件的位置。


推荐阅读