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

MATLAB中for循环内加图例、调整xticks及添加绘图标记方法

问题解决方案

完整改进代码

Q = [16,32,64,128,256,512,1024];
VEC_5 = [0.2380    0.2380    0.2380    0.2380    0.2380    0.2380    0.2380];    
VEC_10 = [1.1898    1.1898    0.2380    0.2380    0.2380    0.2380    0.2380];   
VEC_15 = [2.1416    2.1416    2.1416    1.1898    1.1898    0.2380    0.2380];   
VEC_20 = [4.9970    3.0934    2.1416    2.1416    2.1416    1.1898    1.1898];   
VEC_25 = [4.9970    4.9970    4.9970    3.0934    2.1416    2.1416    1.1898];  
VEC_30 = [8.8043    5.9488    4.9970    4.9970    3.0934    2.1416    1.1898];   
VEC_35 = [10.7079    8.8043    6.9007    4.9970    4.9970    2.1416    2.1416];  
VEC_40 = [14.5152   10.7079    8.8043    6.9007    4.9970    3.0934    2.1416];   
VEC_45 = [16.4188   11.6597   10.7079    8.8043    4.9970    4.9970    2.1416];   
VEC_50 = [19.2742   14.5152   10.7079    8.8043    5.9488    4.9970    2.1416];   
VEC_55 = [21.1779   16.4188   13.5634   10.7079    6.9007    4.9970    2.1416];   
VEC_60 = [23.5574   16.4188   14.5152   10.7079    8.8043    4.9970    2.6175]; 

VEC = [VEC_5;VEC_10;VEC_15;VEC_20;VEC_25;VEC_30;VEC_35;VEC_40;VEC_45;VEC_50;VEC_55;VEC_60];
theta_values = 5:5:60; % 生成theta参数序列
figure
cmap = jet(12);
hold on
for k = 1:12
    % 动态生成图例文本
    legend_str = sprintf('\\theta_{1/2} = %d', theta_values(k));
    % 绘制带标记的折线并绑定图例
    semilogx(Q,VEC(k,:), 'Color', cmap(k, :),'LineWidth',2,...
        'Marker','o','MarkerEdgeColor','b','MarkerFaceColor',cmap(k,:),...
        'DisplayName',legend_str);
end
hold off
% 调整x轴刻度密度,只显示间隔的刻度
xticks(Q(1:2:end))
xlabel('Q order');
ylabel('Coverage area');
legend('Location','best'); % 自动收集图例并放置在最优位置
grid on;

1. 循环内自动生成图例

  • 先创建theta的数值序列theta_values = 5:5:60,对应每条折线的参数;
  • 循环内用sprintf动态拼接图例文本,避免手动编写所有项;
  • 给semilogx添加'DisplayName'属性,将文本绑定到当前折线;
  • 最后只需调用legend('Location','best'),MATLAB会自动收集所有带DisplayName的折线图例。

2. 调整x轴刻度密度

  • 原始xticks(Q)会显示所有Q值,导致刻度拥挤;
  • 可以通过索引筛选部分刻度,比如xticks(Q(1:2:end))只显示奇数位置的刻度(16,64,256,1024);
  • 也可以手动指定需要的刻度值,比如xticks([16,128,512]),根据可视化需求灵活调整。

3. 为折线添加标记

  • 在semilogx参数中添加'Marker'属性,指定标记样式,常用选项有'o'(圆形)、's'(方形)、'^'(三角形)等;
  • 搭配'MarkerFaceColor'设置标记填充色(这里用对应折线的颜色),'MarkerSize'调整标记大小,提升辨识度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:50:43