[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AMPRBB4TR912PJ802NNMW":3,"skill-same:01M71AMPRBB4TR912PJ802NNMW":52},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M71AMPRBB4TR912PJ802NNMW","matlab-plot-style",null,"将统一的绘图样式应用于 MATLAB 代码。触发场景：\n- 用户要求格式化\u002F标准化 MATLAB figure 代码\n- 用户要求\"统一绘图格式\"、\"设置绘图风格\"、\"MATLAB绘图设置\"\n- 用户提到\"matlab plot style\"、\"publication-ready plots\"\n- 用户的 MATLAB 代码中 figure 需要规范化样式","AI-Rabbit\u002Fskills","AI-Rabbit","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48895674?v=4","01M71AMNC4JCXYJQWGY6XR2KTT","AI Rabbit","01M71AMNCWJGFY0RP45B6T0REJ",1,"MIT","https:\u002F\u002Fgithub.com\u002FAI-Rabbit\u002Fskills\u002Fblob\u002Fmaster\u002Fskills\u002Fmatlab-plot-style\u002FSKILL.md",[],[19,20,21,22,23,24,25],"style","plot","matlab plot style","matlab","ready","格式化","Publication","2026-11-10 10:12:30",false,"---\nname: matlab-plot-style\ndescription: |\n  将统一的绘图样式应用于 MATLAB 代码。触发场景：\n  - 用户要求格式化\u002F标准化 MATLAB figure 代码\n  - 用户要求\"统一绘图格式\"、\"设置绘图风格\"、\"MATLAB绘图设置\"\n  - 用户提到\"matlab plot style\"、\"publication-ready plots\"\n  - 用户的 MATLAB 代码中 figure 需要规范化样式\n---\n\n# MATLAB Plot Style Skill\n\n## 样式规范速查\n\n### Figure 模板\n\n**单图（无 subplot）时**：设定 figure 尺寸为 560×420\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\n\n% 配色方案（plot 前）\ntry\n    co = colororder('gem');\ncatch\n    co = lines(7);\nend\n```\n\n**多子图（含 subplot）时**：不设置 Position，让 MATLAB 自动分配子图布局空间\n```matlab\nfigure('Color', 'w');\nhold on; grid on; box on;\n\n% 配色方案（plot 前）\ntry\n    co = colororder('gem');\ncatch\n    co = lines(7);\nend\n```\n\n### 线条\u002F标记样式\n\n| 参数 | 值 | 说明 |\n|------|-----|------|\n| LineWidth | 1.2 | 所有线条 |\n| MarkerSize | 6 | 散点图 |\n| MarkerFaceColor | 'none' | 标记不填充 |\n| 参考线 | 'k--' | 黑色虚线 |\n| 标记 | 'o', 's', '^', 'd', 'v', '\u003C', '>' | 循环使用 |\n| MarkerIndices | 稀疏标记 | 数据点密集时仅每隔N个点显示标记 |\n\n**密集仿真点稀疏标记规则：**\n\n当仿真数据点较多（通常 > 16 个点）时，曲线连线已经足够平滑，若每个点都显示 marker 会导致视觉拥挤且难以区分重叠的曲线。此时应仅每隔若干个点显示一个 marker，使每条曲线上约有 10–14 个标记。\n\n实现方式：在仿真参数段定义标记间隔和索引，然后在 `plot` 中通过 `'MarkerIndices'` 指定：\n\n```matlab\n% 仿真参数段（plot 前）\nnum_pts = length(x_data);\nmarker_step = max(1, round(num_pts \u002F 12));  % 目标约12个marker\nmarker_idx = 1:marker_step:num_pts;\n\n% 绘图时\nplot(x_data, y_data, '-o', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=3)');\n```\n\n判断标准：\n- 数据点 ≤ 16：每个点都显示 marker，**不使用** `MarkerIndices`\n- 数据点 > 16：启用稀疏标记，`marker_step` 取 `round(num_pts \u002F 12)` 附近的整数值\n\n### 曲线类型规则\n\n根据 DisplayName 或变量名识别：\n- **理论曲线**：含\"理论\"、\"theory\"、\"analytical\"\n- **仿真曲线**：含\"仿真\"、\"simulation\"、\"sim\"、\"Monte Carlo\"\n\n| 场景 | 理论曲线 | 仿真曲线 |\n|------|----------|----------|\n| 理论+仿真同时存在 | 仅线条 `'-'` | 仅标记 `'o'` |\n| 仅有仿真 | - | 线条+标记 `'-o'` |\n\n当仿真数据点 > 16 时，无论上述哪种场景，仿真曲线均应使用 `MarkerIndices` 做稀疏标记（见\"线条\u002F标记样式\"一节的密集点规则）。\n\n**多参数组分组曲线场景：**\n- 当识别到可分组的曲线结构（同一算法不同参数值、同一参数组含理论\u002F仿真多条曲线等），**必须先询问用户**选择图例呈现方式：\n  - 选项 A：**分组图例** — 同组同色，颜色方块代理 + 线型代理双列布局\n  - 选项 B：**平铺图例** — 每条曲线独立标注，直接 `DisplayName` 显示完整配置\n- 用户选择分组时：同一参数组的所有曲线（理论\u002F仿真\u002F近似等）使用相同颜色，每组参数在图例中用一个纯色方块代表，曲线类型在图例中单独用黑色样例统一说明\n- 用户选择平铺时：每条曲线各自 `DisplayName` 标注完整配置（如 `NI-REPA (M=8)`），图例用 `legend('show')`\n\n### 字体选择规则\n\n**根据内容自动选择字体：**\n- 标签 (`xlabel`, `ylabel`, `title`) 或图例中包含中文字符 → 使用 `'TimesSimSun'`\n- 标签和图例均为纯英文\u002F数学符号 → 使用 `'Times New Roman'`\n\n**判断方法：** 检查 `xlabel`, `ylabel`, `title`, `legend` 的文本内容是否匹配中文字符（Unicode 范围 `\\u4e00-\\u9fff`）。\n\n### 坐标轴设置\n```matlab\n% 含中文时\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, ...\n    'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n\n% 纯英文时\nset(gca, 'FontName', 'Times New Roman', 'FontSize', 12, ...\n    'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 图例\n```matlab\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\n% 含中文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\n% 纯英文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'Times New Roman');\n```\n\n**核心原则：DisplayName 是唯一标签来源**\n- 所有标签通过 `DisplayName` 在 plot 中设置\n- legend 调用仅用 `'show'` 或传递句柄，**绝不重复指定标签**\n- 正确：`legend('show', ...)` 或 `legend([h1, h2], ...)`\n- 错误：`legend([h1, h2], {'标签1', '标签2'}, ...)` — 重复设置\n\n### 标签（tex 解释器）\n```matlab\nxlabel('{\\itM}', 'Interpreter', 'tex');  % 斜体 M\nylabel('{\\itS}\\rm_{out}', 'Interpreter', 'tex');  % 斜体 S，正体下标 out\n```\n\n### 标题处理\n- **注释掉 title**：原代码中的 title 通常用于调试或文档说明，正式图表中应注释掉\n- 处理方式：在 title 行前添加 `%` 注释符号\n\n## 应用流程\n\n**Step 1：识别现有元素**\n- 绑图函数：`plot`, `scatter`, `bar`, `semilogy`, `loglog` 等\n- 标签\u002F图例：`xlabel`, `ylabel`, `title`, `legend`\n- 轴设置：`xlim`, `ylim`, `xticks`, `yticks`\n\n**Step 2：应用样式**\n- 替换 `figure()` 为标准模板：无 subplot 时设定 `'Position', [200, 100, 560, 420]`；含 subplot 时不设置 Position\n- 插入配色方案（plot 前）\n- 按曲线类型规则设置线条\u002F标记样式\n- **当存在可分组的曲线结构时**：先用 `question` 工具询问用户图例呈现方式（分组 or 平铺），再按用户选择应用对应图例方案\n- 检测标签\u002F图例中是否有中文，选择对应字体\n- 更新 gca、legend、xlabel\u002Fylabel\n\n**Step 3：保持原有**\n- 不改数据、变量名、循环逻辑\n- 不改绘图顺序和数据范围\n- 保留用户注释和导出函数\n\n**颜色索引超过范围时取模：**\n```matlab\nc = co(mod(i-1, size(co,1)) + 1, :);\n```\n\n## 特殊情况\n\n**参考线：**\n```matlab\nyline(value, 'k--', 'LineWidth', 1.2, 'DisplayName', 'label');\nxline(value, 'k--', 'LineWidth', 1.2, 'DisplayName', 'label');\n```\n\n**对数坐标：**\n```matlab\nset(gca, 'YScale', 'log');  % Y轴对数\nset(gca, 'XScale', 'log', 'YScale', 'log');  % 双对数\n```\n\n**多子图：** 每个 subplot 单独设置 gca 样式，根据各自标签内容选择字体。多子图时不设置 figure Position，保留默认尺寸由 MATLAB 自动布局。\n\n**仅图例项（无数据）：**\n```matlab\nplot(NaN, NaN, 'o', 'LineWidth', 1.2, 'MarkerFaceColor', 'none', 'DisplayName', '方法A');\n```\n\n**分组曲线（颜色方块图例）：**\n\n此方案仅在用户选择\"分组图例\"时使用。当同一参数组包含多条不同类型曲线（理论\u002F仿真\u002F上界\u002F近似等）时，使用纯色方块作为该组的颜色代理图例：\n\n```matlab\n% 创建颜色代理句柄（每组参数一个方块）\nh_color(idx) = plot(NaN, NaN, 's', 'MarkerSize', 6, 'MarkerFaceColor', c, ...\n                    'MarkerEdgeColor', c, 'LineWidth', 1.2, 'DisplayName', '参数组标签');\n```\n\n图例布局规范：\n- 双列布局：左侧为参数组颜色方块，右侧为曲线类型说明\n- 参数组标签清晰标注对应配置（如 $N_d=10, N_e=40$）\n- 曲线类型单独使用黑色样例说明（实线\u002F虚线\u002F点\u002F标记等）\n\n示例：\n```matlab\n% 颜色代理（参数组）\nfor idx = 1:num_cases\n    c = co(mod(idx-1, size(co,1)) + 1, :);\n    % 绘制该组所有曲线（理论+仿真），HandleVisibility='off' 不出现在图例\n    plot(x, theory(idx,:), '-', 'LineWidth', 1.2, 'Color', c, 'HandleVisibility','off');\n    plot(x(1:3:end), sim(idx,1:3:end), 'o', 'LineWidth', 1.2, 'Color', c, 'HandleVisibility','off');\n    % 创建颜色方块代理（DisplayName在此设置）\n    h_color(idx) = plot(NaN, NaN, 's', 'MarkerSize', 6, 'MarkerFaceColor', c, ...\n                        'MarkerEdgeColor', c, 'LineWidth', 1.2, 'DisplayName', sprintf('组%d', idx));\nend\n\n% 线型代理（曲线类型）\nh_theory = plot(NaN, NaN, 'k-', 'LineWidth', 1.2, 'DisplayName', '理论值');\nh_sim = plot(NaN, NaN, 'ko', 'LineWidth', 1.2, 'MarkerFaceColor', 'none', 'DisplayName', '仿真值');\n\n% 合并图例（仅传句柄，自动读取DisplayName）\nlgd = legend([h_color, h_theory, h_sim], 'Location', 'best', 'NumColumns', 2, 'FontSize', 11, 'Interpreter', 'tex');\n% 含中文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\n% 纯英文时改用 'FontName', 'Times New Roman'\n```\n\n## 示例\n\n### 示例1：含中文标签\n\n**输入：**\n```matlab\nfigure;\nplot(x1, y1, 'r-o');\nxlabel('信噪比 (dB)'); ylabel('误码率');\nlegend('仿真值');\n```\n\n**输出：**\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(x1, y1, '-o', 'LineWidth', 1.2, 'Color', co(1,:), 'MarkerFaceColor', 'none', 'DisplayName', '仿真值');\n\nxlabel('信噪比 (dB)', 'Interpreter', 'tex');\nylabel('误码率', 'Interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 示例2：纯英文标签\n\n**输入：**\n```matlab\nfigure;\nplot(x1, y1, 'r-o');\nxlabel('SNR (dB)'); ylabel('BER');\nlegend('Simulation');\n```\n\n**输出：**\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(x1, y1, '-o', 'LineWidth', 1.2, 'Color', co(1,:), 'MarkerFaceColor', 'none', 'DisplayName', 'Simulation');\n\nxlabel('SNR (dB)', 'interpreter', 'tex');\nylabel('BER', 'interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'Times New Roman');\nset(gca, 'FontName', 'Times New Roman', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 示例3：密集仿真点 + 稀疏标记\n\n当横轴采样间距较小（如每1 dB一个点），数据点远多于16个时，使用 `MarkerIndices` 仅在部分点上显示标记。\n\n**输入：**\n```matlab\nPt_dBm_range = 0:1:40;\nfigure;\nplot(Pt_dBm_range, mnap_NI_M3, '-s');\nplot(Pt_dBm_range, mnap_NI_M8, '-.s');\nxlabel('发射功率 (dBm)'); ylabel('归一化接收功率');\nlegend('NI-REPA (M=3)', 'NI-REPA (M=8)');\n```\n\n**输出：**\n```matlab\nPt_dBm_range = 0:1:40;\nnum_pts = length(Pt_dBm_range);\nmarker_step = 3;  % 每3个点显示一个marker，共约14个\nmarker_idx = 1:marker_step:num_pts;\n\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(Pt_dBm_range, mnap_NI_M3, '-s', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=3)');\nplot(Pt_dBm_range, mnap_NI_M8, '-.s', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=8)');\n\nxlabel('发射功率 (dBm)', 'Interpreter', 'tex');\nylabel('归一化接收功率', 'Interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n","# MATLAB Plot Style Skill\n\n## 样式规范速查\n\n### Figure 模板\n\n**单图（无 subplot）时**：设定 figure 尺寸为 560×420\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\n\n% 配色方案（plot 前）\ntry\n    co = colororder('gem');\ncatch\n    co = lines(7);\nend\n```\n\n**多子图（含 subplot）时**：不设置 Position，让 MATLAB 自动分配子图布局空间\n```matlab\nfigure('Color', 'w');\nhold on; grid on; box on;\n\n% 配色方案（plot 前）\ntry\n    co = colororder('gem');\ncatch\n    co = lines(7);\nend\n```\n\n### 线条\u002F标记样式\n\n| 参数 | 值 | 说明 |\n|------|-----|------|\n| LineWidth | 1.2 | 所有线条 |\n| MarkerSize | 6 | 散点图 |\n| MarkerFaceColor | 'none' | 标记不填充 |\n| 参考线 | 'k--' | 黑色虚线 |\n| 标记 | 'o', 's', '^', 'd', 'v', '\u003C', '>' | 循环使用 |\n| MarkerIndices | 稀疏标记 | 数据点密集时仅每隔N个点显示标记 |\n\n**密集仿真点稀疏标记规则：**\n\n当仿真数据点较多（通常 > 16 个点）时，曲线连线已经足够平滑，若每个点都显示 marker 会导致视觉拥挤且难以区分重叠的曲线。此时应仅每隔若干个点显示一个 marker，使每条曲线上约有 10–14 个标记。\n\n实现方式：在仿真参数段定义标记间隔和索引，然后在 `plot` 中通过 `'MarkerIndices'` 指定：\n\n```matlab\n% 仿真参数段（plot 前）\nnum_pts = length(x_data);\nmarker_step = max(1, round(num_pts \u002F 12));  % 目标约12个marker\nmarker_idx = 1:marker_step:num_pts;\n\n% 绘图时\nplot(x_data, y_data, '-o', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=3)');\n```\n\n判断标准：\n- 数据点 ≤ 16：每个点都显示 marker，**不使用** `MarkerIndices`\n- 数据点 > 16：启用稀疏标记，`marker_step` 取 `round(num_pts \u002F 12)` 附近的整数值\n\n### 曲线类型规则\n\n根据 DisplayName 或变量名识别：\n- **理论曲线**：含\"理论\"、\"theory\"、\"analytical\"\n- **仿真曲线**：含\"仿真\"、\"simulation\"、\"sim\"、\"Monte Carlo\"\n\n| 场景 | 理论曲线 | 仿真曲线 |\n|------|----------|----------|\n| 理论+仿真同时存在 | 仅线条 `'-'` | 仅标记 `'o'` |\n| 仅有仿真 | - | 线条+标记 `'-o'` |\n\n当仿真数据点 > 16 时，无论上述哪种场景，仿真曲线均应使用 `MarkerIndices` 做稀疏标记（见\"线条\u002F标记样式\"一节的密集点规则）。\n\n**多参数组分组曲线场景：**\n- 当识别到可分组的曲线结构（同一算法不同参数值、同一参数组含理论\u002F仿真多条曲线等），**必须先询问用户**选择图例呈现方式：\n  - 选项 A：**分组图例** — 同组同色，颜色方块代理 + 线型代理双列布局\n  - 选项 B：**平铺图例** — 每条曲线独立标注，直接 `DisplayName` 显示完整配置\n- 用户选择分组时：同一参数组的所有曲线（理论\u002F仿真\u002F近似等）使用相同颜色，每组参数在图例中用一个纯色方块代表，曲线类型在图例中单独用黑色样例统一说明\n- 用户选择平铺时：每条曲线各自 `DisplayName` 标注完整配置（如 `NI-REPA (M=8)`），图例用 `legend('show')`\n\n### 字体选择规则\n\n**根据内容自动选择字体：**\n- 标签 (`xlabel`, `ylabel`, `title`) 或图例中包含中文字符 → 使用 `'TimesSimSun'`\n- 标签和图例均为纯英文\u002F数学符号 → 使用 `'Times New Roman'`\n\n**判断方法：** 检查 `xlabel`, `ylabel`, `title`, `legend` 的文本内容是否匹配中文字符（Unicode 范围 `\\u4e00-\\u9fff`）。\n\n### 坐标轴设置\n```matlab\n% 含中文时\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, ...\n    'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n\n% 纯英文时\nset(gca, 'FontName', 'Times New Roman', 'FontSize', 12, ...\n    'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 图例\n```matlab\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\n% 含中文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\n% 纯英文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'Times New Roman');\n```\n\n**核心原则：DisplayName 是唯一标签来源**\n- 所有标签通过 `DisplayName` 在 plot 中设置\n- legend 调用仅用 `'show'` 或传递句柄，**绝不重复指定标签**\n- 正确：`legend('show', ...)` 或 `legend([h1, h2], ...)`\n- 错误：`legend([h1, h2], {'标签1', '标签2'}, ...)` — 重复设置\n\n### 标签（tex 解释器）\n```matlab\nxlabel('{\\itM}', 'Interpreter', 'tex');  % 斜体 M\nylabel('{\\itS}\\rm_{out}', 'Interpreter', 'tex');  % 斜体 S，正体下标 out\n```\n\n### 标题处理\n- **注释掉 title**：原代码中的 title 通常用于调试或文档说明，正式图表中应注释掉\n- 处理方式：在 title 行前添加 `%` 注释符号\n\n## 应用流程\n\n**Step 1：识别现有元素**\n- 绑图函数：`plot`, `scatter`, `bar`, `semilogy`, `loglog` 等\n- 标签\u002F图例：`xlabel`, `ylabel`, `title`, `legend`\n- 轴设置：`xlim`, `ylim`, `xticks`, `yticks`\n\n**Step 2：应用样式**\n- 替换 `figure()` 为标准模板：无 subplot 时设定 `'Position', [200, 100, 560, 420]`；含 subplot 时不设置 Position\n- 插入配色方案（plot 前）\n- 按曲线类型规则设置线条\u002F标记样式\n- **当存在可分组的曲线结构时**：先用 `question` 工具询问用户图例呈现方式（分组 or 平铺），再按用户选择应用对应图例方案\n- 检测标签\u002F图例中是否有中文，选择对应字体\n- 更新 gca、legend、xlabel\u002Fylabel\n\n**Step 3：保持原有**\n- 不改数据、变量名、循环逻辑\n- 不改绘图顺序和数据范围\n- 保留用户注释和导出函数\n\n**颜色索引超过范围时取模：**\n```matlab\nc = co(mod(i-1, size(co,1)) + 1, :);\n```\n\n## 特殊情况\n\n**参考线：**\n```matlab\nyline(value, 'k--', 'LineWidth', 1.2, 'DisplayName', 'label');\nxline(value, 'k--', 'LineWidth', 1.2, 'DisplayName', 'label');\n```\n\n**对数坐标：**\n```matlab\nset(gca, 'YScale', 'log');  % Y轴对数\nset(gca, 'XScale', 'log', 'YScale', 'log');  % 双对数\n```\n\n**多子图：** 每个 subplot 单独设置 gca 样式，根据各自标签内容选择字体。多子图时不设置 figure Position，保留默认尺寸由 MATLAB 自动布局。\n\n**仅图例项（无数据）：**\n```matlab\nplot(NaN, NaN, 'o', 'LineWidth', 1.2, 'MarkerFaceColor', 'none', 'DisplayName', '方法A');\n```\n\n**分组曲线（颜色方块图例）：**\n\n此方案仅在用户选择\"分组图例\"时使用。当同一参数组包含多条不同类型曲线（理论\u002F仿真\u002F上界\u002F近似等）时，使用纯色方块作为该组的颜色代理图例：\n\n```matlab\n% 创建颜色代理句柄（每组参数一个方块）\nh_color(idx) = plot(NaN, NaN, 's', 'MarkerSize', 6, 'MarkerFaceColor', c, ...\n                    'MarkerEdgeColor', c, 'LineWidth', 1.2, 'DisplayName', '参数组标签');\n```\n\n图例布局规范：\n- 双列布局：左侧为参数组颜色方块，右侧为曲线类型说明\n- 参数组标签清晰标注对应配置（如 $N_d=10, N_e=40$）\n- 曲线类型单独使用黑色样例说明（实线\u002F虚线\u002F点\u002F标记等）\n\n示例：\n```matlab\n% 颜色代理（参数组）\nfor idx = 1:num_cases\n    c = co(mod(idx-1, size(co,1)) + 1, :);\n    % 绘制该组所有曲线（理论+仿真），HandleVisibility='off' 不出现在图例\n    plot(x, theory(idx,:), '-', 'LineWidth', 1.2, 'Color', c, 'HandleVisibility','off');\n    plot(x(1:3:end), sim(idx,1:3:end), 'o', 'LineWidth', 1.2, 'Color', c, 'HandleVisibility','off');\n    % 创建颜色方块代理（DisplayName在此设置）\n    h_color(idx) = plot(NaN, NaN, 's', 'MarkerSize', 6, 'MarkerFaceColor', c, ...\n                        'MarkerEdgeColor', c, 'LineWidth', 1.2, 'DisplayName', sprintf('组%d', idx));\nend\n\n% 线型代理（曲线类型）\nh_theory = plot(NaN, NaN, 'k-', 'LineWidth', 1.2, 'DisplayName', '理论值');\nh_sim = plot(NaN, NaN, 'ko', 'LineWidth', 1.2, 'MarkerFaceColor', 'none', 'DisplayName', '仿真值');\n\n% 合并图例（仅传句柄，自动读取DisplayName）\nlgd = legend([h_color, h_theory, h_sim], 'Location', 'best', 'NumColumns', 2, 'FontSize', 11, 'Interpreter', 'tex');\n% 含中文时\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\n% 纯英文时改用 'FontName', 'Times New Roman'\n```\n\n## 示例\n\n### 示例1：含中文标签\n\n**输入：**\n```matlab\nfigure;\nplot(x1, y1, 'r-o');\nxlabel('信噪比 (dB)'); ylabel('误码率');\nlegend('仿真值');\n```\n\n**输出：**\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(x1, y1, '-o', 'LineWidth', 1.2, 'Color', co(1,:), 'MarkerFaceColor', 'none', 'DisplayName', '仿真值');\n\nxlabel('信噪比 (dB)', 'Interpreter', 'tex');\nylabel('误码率', 'Interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 示例2：纯英文标签\n\n**输入：**\n```matlab\nfigure;\nplot(x1, y1, 'r-o');\nxlabel('SNR (dB)'); ylabel('BER');\nlegend('Simulation');\n```\n\n**输出：**\n```matlab\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(x1, y1, '-o', 'LineWidth', 1.2, 'Color', co(1,:), 'MarkerFaceColor', 'none', 'DisplayName', 'Simulation');\n\nxlabel('SNR (dB)', 'interpreter', 'tex');\nylabel('BER', 'interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'Times New Roman');\nset(gca, 'FontName', 'Times New Roman', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n\n### 示例3：密集仿真点 + 稀疏标记\n\n当横轴采样间距较小（如每1 dB一个点），数据点远多于16个时，使用 `MarkerIndices` 仅在部分点上显示标记。\n\n**输入：**\n```matlab\nPt_dBm_range = 0:1:40;\nfigure;\nplot(Pt_dBm_range, mnap_NI_M3, '-s');\nplot(Pt_dBm_range, mnap_NI_M8, '-.s');\nxlabel('发射功率 (dBm)'); ylabel('归一化接收功率');\nlegend('NI-REPA (M=3)', 'NI-REPA (M=8)');\n```\n\n**输出：**\n```matlab\nPt_dBm_range = 0:1:40;\nnum_pts = length(Pt_dBm_range);\nmarker_step = 3;  % 每3个点显示一个marker，共约14个\nmarker_idx = 1:marker_step:num_pts;\n\nfigure('Color', 'w', 'Position', [200, 100, 560, 420]);\nhold on; grid on; box on;\ntry, co = colororder('gem'); catch, co = lines(7); end\n\nplot(Pt_dBm_range, mnap_NI_M3, '-s', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=3)');\nplot(Pt_dBm_range, mnap_NI_M8, '-.s', 'LineWidth', 1.2, 'Color', co(1,:), ...\n    'MarkerSize', 6, 'MarkerFaceColor', 'none', ...\n    'MarkerIndices', marker_idx, 'DisplayName', 'NI-REPA (M=8)');\n\nxlabel('发射功率 (dBm)', 'Interpreter', 'tex');\nylabel('归一化接收功率', 'Interpreter', 'tex');\nlgd = legend('show', 'Location', 'best', 'FontSize', 11, 'Interpreter', 'tex');\nset(lgd, 'TextColor', 'k', 'EdgeColor', 'k', 'FontName', 'TimesSimSun');\nset(gca, 'FontName', 'TimesSimSun', 'FontSize', 12, 'XColor', 'k', 'YColor', 'k', 'LineWidth', 0.8);\n```\n",{"name":5,"description":7},"master","a21217047c7a6e2a38d4cc2c434f4fc5ef75c441","skills\u002Fmatlab-plot-style",0,"https:\u002F\u002Fgithub.com\u002FAI-Rabbit\u002Fskills","https:\u002F\u002Fgithub.com\u002FAI-Rabbit","2026-05-02 11:48:33",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add AI-Rabbit\u002Fskills --skill matlab-plot-style",{"tool":44,"command":45},"bunx","bunx skills add AI-Rabbit\u002Fskills --skill matlab-plot-style",{"tool":47,"command":48},"pnpm","pnpm dlx skills add AI-Rabbit\u002Fskills --skill matlab-plot-style","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAI-Rabbit\u002Fskills\u002Fblob\u002Fmaster\u002Fskills\u002Fmatlab-plot-style\u002FSKILL.md",true,[],[53],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":26},"01M71AMRG6Q32SE0FZ9QPJB7SA","pdf2eps","将 PDF 文件转换为 EPS（Encapsulated PostScript）格式。当用户想要将 PDF 文件转换为 EPS、批量转换目录中的 PDF、提到 pdftops、PDF 转 PostScript 转换或嵌入 PDF 图形为 EPS 时使用此技能。即使用户只说\"转换这些 PDF\"但上下文表明预期输出是 EPS（例如 LaTeX 工作流），也应触发此技能。","https:\u002F\u002Fgithub.com\u002FAI-Rabbit\u002Fskills\u002Fblob\u002Fmaster\u002Fskills\u002Fpdf2eps\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[55,65,66,67],"文件","PDF","LaTeX"]