在Matlab中使用正确的图例平滑Excel类似的绘图

时间:2014-08-11 23:54:57

标签: matlab plot

我有一些稀疏数据,并希望将它们绘制为通过平滑插值线连接的标记 - 就像Microsoft Excel的默认行为一样。

在互联网上很容易找到这个问题的解决方案,但我发现它们不能令人满意。他们所做的是:将稀疏数据绘制为一个数据集,将其绘制为没有线条的标记,使用选择的方法进行插值,并将插值绘制为第二个数据集,使用没有标记的线条。

这些技巧的问题在于图例中两个数据集将单独列出。我希望图例中描绘的单个数据集是穿过标记的线。

Matlab有可能吗?

1 个答案:

答案 0 :(得分:4)

如果要绘制插值线,有很多方法可以做到这一点。您可以尝试使用matlab interp1() function生成插值行。

让我们创建没有NaN的x和y数据。

x = randn(1,10)
y = randn(1,10)

如果您想要1000个数据点以前只有少数数据点,那就非常简单了:

x2 = min(x):(max(x)-min(x))/1000:max(x)
y2 = interp1(x,y,x2,'cubic')

您可以使用

绘制数据和样条曲线
plot(x,y,'r+')
hold on
plot(x2,y2,'r-')

使用手柄图形时,自定义图例很简单。您可以使用

绘制一条虚线数据集,其中红线穿过标记
h(1) = plot(NaN,NaN,'r-+')
lstring{1} = 'Data';

然后,您可以使用

添加指向此数据集的图例
legend(h,lstring)

你最终会得到一些看起来像这样的东西:

enter image description here

使用句柄图形(即h)的好处是,您可以将所需的任何数据系列投放到图例h(end+1)lstring{end+1}