如何在MATLAB中改变图例的显示格式
How to change display format of legend in MATLAB
我正在寻找一种方法来强制采用特定格式的图例条目。我遵循代码,它们显示为
相反,我希望它像 1e-1,1e-2,1e-3,1e-4, 1e-5。
有没有办法做到这一点。
MWE:
sig=[0.1 0.01 0.001 0.0001 0.00001];
for j=1:length(sig)
for x=1:10
Cost(j,x) = 2*x+j;
end
plot(1:10,Cost(j,:));
end
legend(strcat('\sigma^2_n=',num2str((sig)')));
set(h,'Interpreter','latex')
您应该通过将 custom format specifier 传递给 num2str
来指定在将 sig
转换为字符串时使用科学记数法
legend(strcat('\sigma^2_n=',num2str(sig.', '%.0e')));
如果要去掉指数中的前导0
,可以用正则表达式去掉
S = regexprep(cellstr(num2str(sig.', '%.0e')), '(?<=e[-+])0*', '');
legend(strcat('\sigma^2_n=', S))
我正在寻找一种方法来强制采用特定格式的图例条目。我遵循代码,它们显示为
相反,我希望它像 1e-1,1e-2,1e-3,1e-4, 1e-5。 有没有办法做到这一点。
MWE:
sig=[0.1 0.01 0.001 0.0001 0.00001];
for j=1:length(sig)
for x=1:10
Cost(j,x) = 2*x+j;
end
plot(1:10,Cost(j,:));
end
legend(strcat('\sigma^2_n=',num2str((sig)')));
set(h,'Interpreter','latex')
您应该通过将 custom format specifier 传递给 num2str
sig
转换为字符串时使用科学记数法
legend(strcat('\sigma^2_n=',num2str(sig.', '%.0e')));
如果要去掉指数中的前导0
,可以用正则表达式去掉
S = regexprep(cellstr(num2str(sig.', '%.0e')), '(?<=e[-+])0*', '');
legend(strcat('\sigma^2_n=', S))