如何生成轮廓图?

时间:2009-11-18 19:20:00

标签: graphics graph 2d interpolation contour

如何生成如下轮廓图: contour http://www.fz-juelich.de/vislab/software/gsharp/Gsharp/userguide/interpolate/ex6.gif

如果点在常规网格上,这很容易,但如果它们不是,就像在我的例子中一样?是否有一个相当简单的算法来确定每个像素的颜色?

5 个答案:

答案 0 :(得分:3)

也许有点晚了,

然而,在较新版本的matplotlib中,您可以使用网格数据:

http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data

也许有帮助

答案 1 :(得分:2)

有许多插值算法可用于获取中间点。我在GIS中使用的是Kriging algorithm,看起来你发布的数据使用类似的东西。 (你可以说,因为例如“热黄色”斑点不是以黄色样本为中心,这将是线性插值的情况)

Wikipedia's Bicubic Interpolation page has some nice examples of the effect of choosing a different interpolation.

不同的数据可能需要不同的插值。

然后使用Gnuplot

as described here,创建颜色轮廓。

Looks like it can handle non-rectangular data,但我会测试这个假设。

一个例子:

Example GnuPlot contour image
(来源:lanl.gov

答案 2 :(得分:1)

来自here

  

Origin的XYZ Contour图可让您创建等高线图,而无需将XYZ数据转换为矩阵。它使用一种称为三角测量的插值形式。

     

三角剖分是将曲面或平面多边形划分为一组三角形,通常具有每个三角形边完全由两个相邻三角形共享的限制。三角剖分具有能够处理稀疏的额外好处,以及不规则数据。

听起来很难,但可行。

答案 3 :(得分:1)

显示的图像不是传统的等高线图。它本质上是matlab可以用函数pcolor生成的,如果该函数可以直接对散乱数据起作用。事实上,pcolor只是冲浪,只需要查看(0,90)。

如果你真的想看一个轮廓图,最简单的答案就是在文件交换中找到tricontour。该工具将对散乱数据进行三角测量,然后生成等高线图。

如果您希望在分散的数据集上生成类似pcolor的解决方案,那么一个简单的解决方案是使用delaunay对数据进行三角测量,然后调用trisurf。这些电话可能看起来像这样......

tri = delaunay(x,y);
trisurf(tri,x,y,z)
view(0,90)

不可否认,该解决方案不会在原始图片中为您提供漂亮的圆形彩色域。其他更复杂的解决方案也是必要的。但由于我不确定我上面提出的解决方案是否可以接受,我现在就停在这里。

答案 4 :(得分:0)

查找2D插值。有一些简单的算法,但它们可能表现不佳(或需要很长时间才能计算)。