我有一些稀疏数据,并希望将它们绘制为通过平滑插值线连接的标记 - 就像Microsoft Excel的默认行为一样。
在互联网上很容易找到这个问题的解决方案,但我发现它们不能令人满意。他们所做的是:将稀疏数据绘制为一个数据集,将其绘制为没有线条的标记,使用选择的方法进行插值,并将插值绘制为第二个数据集,使用没有标记的线条。
这些技巧的问题在于图例中两个数据集将单独列出。我希望图例中描绘的单个数据集是穿过标记的线。
Matlab有可能吗?
答案 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)
你最终会得到一些看起来像这样的东西:
使用句柄图形(即h
)的好处是,您可以将所需的任何数据系列投放到图例h(end+1)
和lstring{end+1}
。