我在x-y平面上有一组数据,每个点和每个点都有多个"能量"相关。我已经可以用选定的能量绘制该表面的恒定能量轮廓,但问题是我还希望能够根据另一组数据的变化沿着轮廓改变颜色。
基本上我想尝试绘制此图形,但能够根据与轮廓位置无关的一组数据(忽略黑色虚线)改变任何轮廓上任何点的颜色:
我的第一次尝试是使用散射函数,这个想法是,足够的散点在一起看起来大致类似于轮廓的实线,但可以自由地独立设置每个散点的颜色。 然而,看起来这看起来很糟糕,而且它很慢,因为我基本上必须自己找到恒定能量表面。
我的第二次尝试是将数据挤出到3-D并使用isosurface函数创建可以使用补丁绘制的面和顶点数据,并且补丁允许颜色变化。然后我会查看这个挤压表面,以获得轮廓图。 然而,这会产生一个无限小的表面,当观察结束时它会消失,如此处所示,其中视图不是完全结束:
我瞄准的3D版本看起来像http://imgur.com/xbShmC7
有没有人知道:
绘制二维轮廓的方法,允许我独立地沿着任何轮廓线改变颜色,
一种使补丁图形对象在第二张图片中使用的方法更厚,以便在查看时它们不可见。
感谢。
答案 0 :(得分:1)
如果您使用数据集,可以使用contour3
功能,则可以通过其手柄的menas设置等高线图中每条线的颜色。
在下面的代码中,您可以看到如何为peaks
函数的每个轮廓线设置随机颜色。
[x,y,z]=peaks
[c,h] = contour3(z);
for i=1:length(h)
set(h(i),'linewidth',2,'edgecolor',rand(3,1))
end
grid on
您可以使用您要使用的特定颜色集替换rand
颜色分配。
峰值等高线图:默认颜色
峰轮廓图:随机颜色
希望这有帮助。
答案 1 :(得分:1)
我找到了一个解决方案,关键是使用ContourMatrix,可以使用contourc函数创建。
这将输出一个矩阵,其中包含构成轮廓的点的x-y坐标列表。然后可以使用line命令绘制每个轮廓。然而,为了改变颜色,我使用了this trick和surface命令。
如果我将颜色设置为仅在x位置变化,我的输出现在看起来像这样: