如何绘制带特定间隔标记形状的折线?Matlab绘图技术问询
解决Matlab黑白打印折线区分问题:带间隔标记的折线绘制
嘿,这个问题我太熟悉了!Matlab的plot函数本身就支持直接绘制带形状标记的折线,还能精准控制标记的显示间隔,而且完全能让图例自动同步——根本不需要分开绘制折线和标记。咱们直接改你的代码就能搞定:
核心思路
把折线的颜色、线型、标记形状、标记间隔都通过同一个plot命令定义,这样每个数据系列是一个独立的图形对象,图例会自动包含「线型+标记+颜色」的完整组合,完美解决黑白打印区分的问题。
修改后的完整代码
f = myfunc1(...); % (f=1x4 cell) % (f{i} : 1x1000000 matrix) g = myfunc1(...); % (g=1x4 cell) % (g{i} : 1x1000000 matrix) colors = {'red', 'blue', 'green', 'black'}; % 修正了你原代码里的单引号语法错误 leg = {'Series 1', 'Series 2', 'Series 3', 'Series 4'}; % 替换成你的实际图例文本 markers = {'o', '*', 's', '^'}; % 自定义标记:圆形、星形、方形、上三角 for i=1:4 figure(1); % 关键:用同一个plot命令指定所有属性,MarkEvery控制每100个点显示一个标记 plot(f{i}, 'Color', colors{i}, 'LineStyle', '-', 'Marker', markers{i}, 'MarkEvery', 100); hold on; grid on; figure(2); plot(g{i}, 'Color', colors{i}, 'LineStyle', '-', 'Marker', markers{i}, 'MarkEvery', 100); hold on; grid on; end for i=1:2 fig = figure(i); legend(leg); legend('Location', 'best'); % 让图例自动选最优位置,可选 end
关键参数说明
Marker:指定标记形状,Matlab支持很多选项,比如'o'(圆形)、'*'(星形)、's'(方形)、'^'(上三角)、'p'(五边形)等等,你可以根据需求替换。MarkEvery:精准控制标记的显示间隔,这里设为100就表示每100个数据点显示一个标记,完全符合你的需求。- 把所有属性放在同一个
plot里:这样每个系列是一个单一的图形对象,图例会自动把线型、标记、颜色都包含进去,不会出现「标记和折线图例不同步」的问题。
额外优化建议
如果觉得标记太小或太大,可以加上'MarkerSize', 6(数字按需调整)参数;如果想要标记填充颜色和折线一致,加'MarkerFaceColor', colors{i}就行。
内容的提问来源于stack exchange,提问作者Danny_Kim
相关产品推荐
相关产品推荐

