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

Octave中图例符号线宽与实际绘图符号线宽不一致如何修复

问题修复方案

Octave默认不会将绘图时配置的标记线宽同步到图例组件,可通过以下两种方法实现图例符号与绘图区符号线宽完全一致:

方案1:通过绘图句柄精准调整(兼容所有Octave版本)

修改代码存储每个图层的绘图句柄,创建图例后单独调整对应符号的线宽即可:

clear;

rand ("seed", 158);

data1x = rand(1,30);
data1y = rand(1,30);

data2x = 1+rand(1,30);
data2y = 1+rand(1,30);

dbx = 0:0.1:1.5;
dby = (-2/1.5).*dbx+2;

% 存储各图层绘图句柄
h_neg = plot(data1x,data1y,'x','linewidth', 3);
hold on;
h_pos = plot(data2x,data2y,'x','linewidth', 3);
h_db = plot(dbx,dby,'k','linewidth', 2);

% 传入句柄创建图例,避免图层对应错误
legend([h_neg, h_pos, h_db], "Negative", "Positive", "Decision boundary", "location","east");

% 调整图例内各符号的线宽
lgd_objs = get(legend(), 'Children');
set(lgd_objs(1), 'linewidth', 2); % 决策边界线宽保持和绘图一致为2
set(lgd_objs(2), 'linewidth', 3); % Positive类叉号线宽设为3
set(lgd_objs(3), 'linewidth', 3); % Negative类叉号线宽设为3

set(gca,"linewidth", 2, "fontsize", 20);
axis("nolabel");

hold off;

saveas(1,"Diagram2.svg","svg");

方案2:全局设置图例标记线宽(适合高版本Octave)

如果你使用的是Octave 6.0及以上版本,可直接调用markerlinewidth属性全局设置图例标记的线宽,无需逐个调整:

% 在原有代码创建完图例后添加以下一行代码即可
set(findobj(gcf, 'type', 'legend'), 'markerlinewidth', 3);

注意:该属性仅在高版本Octave中支持,低版本运行会报错,请优先使用方案1


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:48:04