在 Matlab 中具有正确图例的类似 Excel 的平滑绘图

Posted

技术标签:

【中文标题】在 Matlab 中具有正确图例的类似 Excel 的平滑绘图【英文标题】:Smooth Excel-like plot with correct legend in Matlab 【发布时间】:2014-08-11 23:54:56 【问题描述】:

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

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

这些技巧的问题在于,在图例中,两个数据集将分别列出。我希望图例中将单个数据集描述为穿过标记的线。

在 Matlab 中可以吗?

【问题讨论】:

取决于您的问题。如果你想绘制 n 条插值线,有很多方法可以做到这一点。如果您询问如何添加自定义图例,您可以使用h[1] = plot(NaN,NaN,'r-+')legend(h,"Data") 绘制一个穿过标记的红线的虚拟数据集。 ...作为答案添加 你的意思是你只想要插值线上的 1 个图例,并且可能添加了标记但没有图例? 【参考方案1】:

如果您想绘制插值线,有很多方法可以做到这一点。您可以尝试使用 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-+')
lstring1 = 'Data';

然后您可以使用

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

你最终会得到大致如下所示的东西:

使用句柄图形(即h)的好处是您可以将任何您想要的数据系列作为h(end+1)lstringend+1 放入图例中。

【讨论】:

+1,我也是这样做的,但我没有想过用Nan做假人。 谢谢,这就是我要找的:) 想一想,图例文本“数据”不正确 - 它应该类似于“三次样条插值数据”。而且,就我个人而言,我不喜欢平滑线,因为它们表明您对数据背后的过程比您实际了解的更多...

以上是关于在 Matlab 中具有正确图例的类似 Excel 的平滑绘图的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB eps 导出不包括图例框

来自单元格的 Matlab 图例,用于使用 for 循环创建的绘图

MATLAB中的图例问题,求解释。。

excel图例项是啥东西 在哪里设定

关于 matlab 中 quiver 加图例

excel图表图例怎么设置