在 Matlab 中累积数据图和拟合

Accumulating plot of data and fit in Matlab

我有一个从文件导入数据并创建指数拟合的 Matlab 脚本。我希望脚本使用相同的颜色绘制数据点和拟合。图例应该是数据文件的名称。当我 运行 再次为另一个输入文件使用相同的脚本时,我希望新数据和拟合显示在同一图中 window 添加到图例的新数据文件的名称。

目前我只有这个;

expfit = fit(x,y,'exp1')

figure(1)
hold all
plot(x,y,'*','DisplayName','fileName)
legend('Interpreter','none')
legend show

使用

plot(expfit,x,y,'DisplayName','fileName')

无效

如何使用与数据相同的颜色将拟合线添加到每个数据并 将文件名添加到图例中 ?

你很接近...

一个简单的方法是预先设置颜色

c = parula(7); % default colour map with 7 colours

figure(1); clf;
hold on
% filename is a variable e.g. filename = 'blah.csv'; from where the data was loaded
plot( x, y, '*', 'DisplayName', filename, 'color', c(1,:) );
plot( expfit, x, y, '-', 'HandleVisibility', 'off', 'color', c(1,:) );
legend('show');

注意通过设置 HandleVisibility 关闭拟合将不会显示在图例中。这是个人喜好,我只喜欢数据和拟合的一个条目,您也可以在第二个图上使用 DisplayName

两个图都使用相同的颜色,使用 color 输入。我都使用了颜色图的第一行,如果你绘制了一些其他数据,你可以使用第二行等。

另一种方法是让 MATLAB 自动确定颜色并复制第二个绘图的颜色,您需要为第一个绘图创建一个变量 (p) 以获得颜色

p = plot( x, y, '*', 'DisplayName', filename );
plot( expfit, x, y, '-', 'HandleVisibility', 'off', 'color', p.Color );

其他代码相同。