如何在Matlab绘图中改变线条的颜色(类似于colormap)?

7
我有一个二维空间,其中定义了一个函数值(您可以将其视为流形)。现在我使用contourf绘制了函数值,并将色图更改为比jet更柔和的颜色。到目前为止,看起来很不错。
现在我想在我的空间中绘制代表时间状态的线条。这也可以使用plot命令实现。但我想要更多的改进:现在有一个额外的状态(值为0...50)是隐藏的。我希望根据此隐藏状态更改线条颜色。因此,在某种意义上,对由plot绘制的线条应用单独的色图,就像瀑布图中一样。
在Matlab中是否可以实现这一点(或类似的内容)?
谢谢
3个回答

8

如果您想使用插值着色或者颜色随着颜色图改变,那么您需要将数据绘制成网格并适当设置edgecolor属性。请注意,为了将其绘制为网格,您需要复制它,使其在每个方向上至少有2个大小。

h = mesh([X(:) X(:)], [Y(:) Y(:)], [Z(:) Z(:)], [C(:) C(:)], ...
    'EdgeColor', 'interp', 'FaceColor', 'none');

如果您想同时绘制多条线路,您可能还需要查看MeshStyle属性。

与在cline中使用的解决方案相比,这个解决方案也要好得多,因为它只创建一个图形对象,而不是n个。


我不确定我是否正确地理解了您的意思。我认为mesh命令将产生3D图形。我希望它是2D的(从上方投影)。我应该为Z坐标设置什么值? - Christian Wolf
1
将Z坐标设置为0,并使用view(2)将视角旋转回标准的XY视角。 - Nzbuu
此外,由@Adrian链接的函数恰好实现了这一点。 - Nzbuu

2

请查看文件交换中心的cline.m函数,我认为它正是您需要的。


这将实现您想要的效果,假设您想要平面着色。但它不太美观。 - Nzbuu

2
我可以推荐文件交换中的彩色线条条目。它获得了良好的反馈,并使用色图来定义显示颜色,在许多项目中我都成功地使用过它。 Colored line entry

正如@Nzbuu所提到的,这比cline.m更漂亮,因为它使用单个连续曲线(通过mesh)而不是line。如果您的线上有许多点,这也使其更有效率。 - Peter D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接