Matlab 画多根线,matlab plot画多条不同颜色的线

本文提供了一个Matlab代码示例,展示如何在同一图表中绘制多条线并使用不同颜色进行区分,包括红色、绿色、蓝色、黑色、青色和黄色。代码通过'hold on'和'hold off'命令保持图形状态,依次绘制各线条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用matlab画图的时候,有时需要在一个图中画多条线,并且用不同的颜色区分,下面是我的一个demo。

matlab代码如下:

clear

clc

close all;

kld = [3.9,3.2,4,4,4.5,3.2,3.5,3.5,3.7,4,4.4,3,3.2,3.5,3.7,4.3,4.5,...

4.3,3.4,4,3.3,3,4,4,4.3,3.7,3.5,4.3,4.2,3,3.12,4,4.2,4.9,4.5,4.4,4.5,...

3.7,3.5,4.3,3.4,3.6,4,4.2,3.9,4.2];

kld_sqrt = [3.8,3,4.1,3.9,4.6,3.3,3.4,3.6,4,4.2,4.2,3.4,3.5,3.5,...

3.6,4.2,4.6,4.5,3.3,3.8,3.3,3.2,3.9,4.1,4.2,3.6,3.6,4.3,4,3.2,3.2,...

4,4.1,4.8,4.7,4.3,4.3,3.7,3.6,4.2,3.5,3.4,3.9,4.1,3.8,4];

jsd = [4,3.5,3.8,4.2,3,3.6,3.8,3.9,3.5,4.1,4.5,3.1,3.4,3.8,3.9,...

4.1,4.5,4,3.2,3.5,3.4,4.7,4.1,4.3,4.6,3.5,3.5,4.2,4.3,2.9,3.2,3.9,...

4.2,4.8,4.6,4.6,4.3,3.6,3.7,4.6,3.2,3.5,4,4.1,3.7,4.3];

ed = [3.5,2.5,2.1,1.3,3,2.5,2.7,2.2,1.5,2,1.7,1.2,3.5,3,3.1,3.3,...

2.8,3.7,2.7,2.5,3,2.9,3,1.2,2,3.8,3,2.9,3.8,3.3,2.5,2.2,3,3.7,3,2.8,...

3,2,3.4,3.2,2.8,1.3,2,2.5,2.3,3.4

<think>嗯,用户现在问的是如何用MATLABplot函数多条线。之前他们问过关于imresize的使用,可能现在在做数据处理,需要可视化结果。首先,我需要回顾plot函数的基本用法,尤其是如何在同一图上绘制多条线。 用户可能的情况是,他们收集了多组数据,想要比较不同数据集的变化趋势,或者展示多个变量随同一自变量的变化。常见的情况比如不同实验条件下的结果对比,或者不同参数对系统的影响。 接下来,我需要考虑用户可能的水平。之前他们问过imresize,可能对MATLAB有一定基础,但plot的使用可能不太熟悉。需要从基础的方法开始,逐步介绍不同的方法,并给出示例代码,确保他们能够理解。 首先,plot函数的基本语法是plot(X,Y),但绘制多条线的话,可能有几种方法。比如,多次调用plot并hold on,或者一次性传入矩阵。需要列举不同的方法,比较它们的优缺点,方便用户选择合适的方式。 然后,需要考虑不同的输入方式。比如,使用矩阵作为Y,或者使用多组X和Y对。这时候需要解释清楚每种情况下的参数设置,避免用户混淆。例如,如果Y是矩阵,每一列会被视为一条线,而X可以是向量或者矩阵,这时候可能需要转置或者调整维度。 另外,颜色线型的设置对于区分多条线很重要。用户可能需要自定义线条样式,比如不同颜色线型、标记符号。需要给出示例,说明如何在plot函数中设置这些属性,或者使用set函数进行后续调整。 还有,图例的添加也是关键。当有多条线时,用户需要知道如何正确标注每条线对应的数据。需要说明legend函数的使用方法,以及如何按顺序对应标签和数据线。 此外,可能需要注意的一些常见问题,比如数据维度不一致导致的错误,或者hold on没有正确使用导致覆盖之前的图形。需要提醒用户检查数据尺寸,确保X和Y的长度匹配,以及正确使用hold on和hold off。 最后,可能需要提到一些高级技巧,比如使用循环动态添加线条,或者结合其他绘图函数如subplot来分开展示,但根据用户的问题,可能基础方法更为重要。需要保持回答结构清晰,分点说明,每个方法都有示例代码,便于用户直接复制使用。 总结一下,回答的结构应该是先介绍不同的绘制方法,每种方法的代码示例,然后是样式设置,图例添加,常见问题及注意事项。这样用户能够逐步了解如何实现多线绘制,并根据自己的需求选择合适的方法。</think>以下是关于MATLAB中使用`plot`函数绘制多条曲线的详细指南: --- ### 一、基础绘制方法 #### 方法1:连续调用`plot` + `hold on` ```matlab x = 0:0.1:2*pi; y1 = sin(x); y2 = cos(x); figure plot(x, y1, 'r-'); % 绘制第一条红色实线 hold on % 保持当前图形 plot(x, y2, 'b--'); % 绘制第二条蓝色虚线 hold off % 解除保持状态 ``` #### 方法2:单次调用多数据对 ```matlab plot(x, y1, 'r-', x, y2, 'b--') % 交替输入X,Y,格式参数 ``` #### 方法3:矩阵输入法 ```matlab Y = [y1; y2]; % 2行n列的矩阵 plot(x, Y) % 自动将每行作为一条曲线 ``` --- ### 二、高级绘制技巧 #### 1. 自动颜色循环 ```matlab % 利用MATLAB默认颜色顺序(7种颜色循环) x = 0:0.1:pi; Y = [sin(x); cos(x); tan(x)]; plot(x, Y, 'LineWidth', 2); ``` #### 2. 显式颜色控制 ```matlab colors = ['r', 'g', 'b', 'm', 'c']; % 自定义颜色序列 for k = 1:5 plot(x, Y(:,k), 'Color', colors(k), 'LineStyle', '-.'); end ``` #### 3. 混合线型与标记 ```matlab plot(x, y1, 's--', ... % 方形虚线 x, y2, '^:', ... % 三角点线 x, y3, 'd-'); % 菱形实线 ``` --- ### 三、图形标注规范 #### 1. 图例添加 ```matlab legend({'正弦波', '余弦波', '实验数据'}, ... 'Location', 'best', ... 'FontSize', 12) ``` #### 2. 线型参数对照表 | 符号 | 含义 | 示例 | |------|---------------|------------| | '-' | 实线 | `'r-'` | | '--' | 虚线 | `'g--'` | | ':' | 点线 | `'b:'` | | '-.' | 点划线 | `'m-.'` | | 'o' | 圆圈标记 | `'co'` | | 's' | 方形标记 | `'ks'` | | '*' | 星号标记 | `'y*'` | --- ### 四、多维数据可视化 #### 1. 多参数函数绘制 ```matlab [X,Y] = meshgrid(-2:0.1:2); Z = X.*exp(-X.^2 - Y.^2); figure for k = 1:5 plot(X(k,:), Z(k,:), 'LineWidth', 1.5); hold on end hold off ``` #### 2. 动态更新曲线 ```matlab h = plot(NaN, NaN); % 预创建图形对象 axis([0 10 -1 1]); for t = 0:0.1:10 y = exp(-t/2)*sin(t); set(h, 'XData', [get(h,'XData') t], ... 'YData', [get(h,'YData') y]); drawnow end ``` --- ### 五、常见问题解决方案 #### 问题1:曲线覆盖 **现象**:后绘制的曲线遮挡先前内容 **解决**: ```matlab set(gca, 'Layer', 'top') % 将坐标轴置于顶层 uistack(h1, 'top') % 将指定曲线提到最前 ``` #### 问题2:图例不匹配 **现象**:图例项数与曲线数量不一致 **正确做法**: ```matlab % 按绘制顺序对应图例标签 legend({'曲线1', '曲线2', ...}, 'AutoUpdate','off') ``` #### 问题3:性能优化 **大数据量优化**: ```matlab set(gcf, 'Renderer', 'painters') % 矢量渲染器 plot(x, y, '.-', 'MarkerIndices', 1:100:length(y)) % 稀疏标记 ``` --- ### 六、综合应用示例 **多子图对比**: ```matlab t = 0:0.01:1; signals = {sin(2*pi*t), cos(2*pi*t), sawtooth(2*pi*t)}; figure for k = 1:3 subplot(3,1,k) plot(t, signals{k}, 'Color', rand(1,3)) % 随机颜色 title(['信号类型 ', num2str(k)]) xlabel('时间 (s)') ylabel('幅值') end ``` **专业论文配图**: ```matlab figure('Position', [100 100 800 600]) plot(x, y1, 'k-o', 'MarkerSize', 6, ... 'MarkerFaceColor', 'w', ... 'LineWidth', 1.5) hold on errorbar(x, y2, err, 'rs--', ... 'CapSize', 5, ... 'LineWidth', 1.2) hold off set(gca, 'FontSize', 14, ... 'XGrid', 'on', ... 'YGrid', 'on') xlabel('频率 (Hz)', 'FontWeight','bold') ylabel('增益 (dB)', 'FontWeight','bold') legend('理论值', '实验值', ... 'Location', 'northeast') exportgraphics(gcf, 'figure.pdf', 'ContentType','vector') ``` --- ### 七、版本特性说明 | MATLAB版本 | 重要更新 | |-----------|-----------------------------| | R2019b | 新增`tiledlayout`布局系统 | | R2020a | 支持`ColorOrder`模式预设 | | R2021b | 增强图形渲染性能 | --- **最佳实践建议**: 1. 绘制10条以上曲线时建议使用`plotmatrix`或`subplot`分开展示 2. 学术论文配图推荐设置:`'LineWidth'`至少1.5pt,字号不小于12pt 3. 使用`axis tight`自动调整坐标范围以适配数据