我该如何生成这样的等高线图:
等高线图 http://www.fz-juelich.de/vislab/software/gsharp/Gsharp/userguide/interpolate/ex6.gif
如果点是在一个规则的网格上,那么很容易生成,但是如果不是,比如我的例子呢?是否有一个相当简单的算法来确定每个像素的颜色?
http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data
也许它有帮助
(来源: lanl.gov)
所展示的图像不是传统的等高线图。它基本上是Matlab可能使用函数pcolor生成的,如果该函数可以直接处理散点数据。实际上,pcolor只是surf,并调用view(0,90)。
如果您真的想看到等高线图,则最简单的答案是使用文件交换中找到的tricontour。此工具将三角化散点数据,然后生成等高线图。
如果您希望在散点数据集上生成类似于pcolor的解决方案,则简单的解决方案是使用delaunay对数据进行三角剖分,然后调用trisurf。调用可能看起来有些像这样...
tri = delaunay(x,y);
trisurf(tri,x,y,z)
view(0,90)
诚然,该解决方案无法为您提供原始图片中漂亮的圆形彩色域。为此,需要其他更复杂的解决方案。但由于我还不确定上述解决方案是否可接受,因此我暂时在这里停止。
从这里开始
Origin的XYZ Contour图形允许您创建等高线图,而无需将XYZ数据转换为矩阵。它使用一种称为三角剖分的插值形式。
三角剖分是将表面或平面多边形划分为一组三角形,通常限制每个三角形边完全由两个相邻三角形共享。三角剖分的附加好处是能够处理稀疏和不规则数据。
听起来似乎有些困难,但是可行。