You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用代码替换MATLAB fitlm绘图图例中的*为乘号×

问题

我正在使用MATLAB的fitlm函数分析测试数据,调用plot(mdl)生成的图例会自动显示线性模型方程,形式为:

y = m*x+c

我需要将其中的星号*替换为Unicode编码U00D7的乘号×,使方程变为:

y = m × x+c

询问是否可以通过代码实现该替换,还是必须手动修改,附带测试代码如下:

clear
clc

%生成测试数据
%----------------------------
x1 = 1:0.01:3;
r = -1 + (1+1)*rand(1,201);
x1 = x1 + r;

y1 = 1:0.01:3;
r = -1 + (1+1)*rand(1,201);
y1 = y1 + r;

x1 = x1';
y1 = y1';
label1 = zeros(length(y1),1);

Tclust1 = [label1,x1,y1];
%----------------------------
x2 = 4:0.01:6;
r = -1 + (1+1)*rand(1,201);
x2 = x2 + r;

y2 = 10:0.01:12;
r = -1 + (1+1)*rand(1,201);
y2 = y2 + r;

x2 = x2';
y2 = y2';
label2 = ones(length(y2),1);

Tclust2 = [label2,x2,y2];

%----------------------------
x3 = 5:0.01:7;
r = -1 + (1+1)*rand(1,201);
x3 = x3 + r;

y3 = 11:0.01:13;
r = -1 + (1+1)*rand(1,201);
y3 = y3 + r;

x3 = x3';
y3 = y3';
label3 = label2+1;

Tclust3 = [label3,x3,y3];
%----------------------------
T = [Tclust1;Tclust2;Tclust3];

%线性模型准备工作 -------------------------------------------------------------
%按标签分类
Label_idx = zeros(length(T(:,1)),1);

for qq = 1:length(Label_idx)  
    if T(qq,1) > 0
        Label_idx(qq) = 1;
    end
end

for qq = 1:length(Label_idx)
    if T(qq,1) > 1
        Label_idx(qq) = 2;
    end
end

%生成虚拟变量
for qq = 1:length(Label_idx)
    if Label_idx(qq) == 0
        Label_1(qq) = 1;
    else
        Label_1(qq) = 0;
    end
end

Label_1 = Label_1';

for qq = 1:length(Label_idx)
    if Label_idx(qq) == 2
        Label_2(qq) = 1;
    else
        Label_2(qq) = 0;
    end
end

Label_2 = Label_2';

%建立线性模型 -------------------------------------------------

%输入预测变量
pred = (T(:,2));
%输入响应变量
comp = (T(:,3));

%交互项参数
int_lo = pred.*Label_1;
int_hi = pred.*Label_2;

%构建预测矩阵
X = [pred,Label_1,Label_2,int_lo,int_hi];
LR_mdl = fitlm(X,comp);

%绘图 ==========================================================
plot(LR_mdl)
解决方案

可以通过代码自动替换图例中的乘号,无需手动修改。核心逻辑是获取绘图后的图例对象,提取文本内容并完成替换,再重新设置图例文本。

在调用plot(LR_mdl)之后,添加以下代码即可实现替换:

% 获取当前图形的图例对象
lgd = findobj(gcf, 'Type', 'Legend');
% 提取图例文本数组
legend_strings = lgd.String;
% 将所有*替换为Unicode乘号×(U00D7)
new_legend_strings = strrep(legend_strings, '*', char(0xD7));
% 更新图例文本
lgd.String = new_legend_strings;

完整修改后的代码

clear
clc

%生成测试数据
%----------------------------
x1 = 1:0.01:3;
r = -1 + (1+1)*rand(1,201);
x1 = x1 + r;

y1 = 1:0.01:3;
r = -1 + (1+1)*rand(1,201);
y1 = y1 + r;

x1 = x1';
y1 = y1';
label1 = zeros(length(y1),1);

Tclust1 = [label1,x1,y1];
%----------------------------
x2 = 4:0.01:6;
r = -1 + (1+1)*rand(1,201);
x2 = x2 + r;

y2 = 10:0.01:12;
r = -1 + (1+1)*rand(1,201);
y2 = y2 + r;

x2 = x2';
y2 = y2';
label2 = ones(length(y2),1);

Tclust2 = [label2,x2,y2];

%----------------------------
x3 = 5:0.01:7;
r = -1 + (1+1)*rand(1,201);
x3 = x3 + r;

y3 = 11:0.01:13;
r = -1 + (1+1)*rand(1,201);
y3 = y3 + r;

x3 = x3';
y3 = y3';
label3 = label2+1;

Tclust3 = [label3,x3,y3];
%----------------------------
T = [Tclust1;Tclust2;Tclust3];

%线性模型准备工作 -------------------------------------------------------------
%按标签分类
Label_idx = zeros(length(T(:,1)),1);

for qq = 1:length(Label_idx)  
    if T(qq,1) > 0
        Label_idx(qq) = 1;
    end
end

for qq = 1:length(Label_idx)
    if T(qq,1) > 1
        Label_idx(qq) = 2;
    end
end

%生成虚拟变量
for qq = 1:length(Label_idx)
    if Label_idx(qq) == 0
        Label_1(qq) = 1;
    else
        Label_1(qq) = 0;
    end
end

Label_1 = Label_1';

for qq = 1:length(Label_idx)
    if Label_idx(qq) == 2
        Label_2(qq) = 1;
    else
        Label_2(qq) = 0;
    end
end

Label_2 = Label_2';

%建立线性模型 -------------------------------------------------

%输入预测变量
pred = (T(:,2));
%输入响应变量
comp = (T(:,3));

%交互项参数
int_lo = pred.*Label_1;
int_hi = pred.*Label_2;

%构建预测矩阵
X = [pred,Label_1,Label_2,int_lo,int_hi];
LR_mdl = fitlm(X,comp);

%绘图 ==========================================================
plot(LR_mdl)

% 替换图例中的*为×
lgd = findobj(gcf, 'Type', 'Legend');
legend_strings = lgd.String;
new_legend_strings = strrep(legend_strings, '*', char(0xD7));
lgd.String = new_legend_strings;

内容的提问来源于stack exchange,提问作者user2587726

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:21:03