用彩色图在3D平面上投影三维凸包

时间:2016-11-13 12:09:10

标签: python projection triangulation convex-hull contourf

最后我想要的是平滑的彩色地图,上面绘有轮廓。我们的想法是尽可能多地保留3D凸包的信息。

问题是到目前为止我开发的代码并不适用于所有输入。

实施例

如果我设置tricontourf()整数参数,让我们说8并提供10个输入文件,我将获得8个图,这些图是OK,但是2将是纯色。 接下来,如果我将参数更改为9,我将获得7个良好和3个奇数。第一步中的一些优点现在是错误的!

理想情况下,我希望将此参数固定为~25,以便平滑色彩图。

看看图片:

This is wrong, int parameter = 9

this is what I want but smoother, int parameter 8

对我来说重要的是基于凸壳进行三角测量。

import matplotlib.pyplot as plt
import numpy as np
import sys, os, time, math
from scipy.spatial import ConvexHull
from matplotlib.tri import Triangulation
import matplotlib.cm as cm

# get covex hull data and save them to an array
cvx = []
dataX = []
for filename in sys.argv[1:]:

    X = np.genfromtxt(filename,delimiter="", skip_header=2)
    dataX.append(X)
    hull = ConvexHull(X)
    cvx.append(hull)


for idx,filename in enumerate(sys.argv[1:]):

    # start plotting data
    x, y, z = dataX[idx].T

    # triangulation based on a convex hull
    simpl = cvx[idx].simplices
    tri = Triangulation(x, y, triangles=simpl)

    # plot lines (triangles)    
    plt.triplot(tri, color='k')

    # plot contour lines based on convex hull facets
    plt.tricontour(x, y, z, 5, linewidths=0.5, colors='k', triangles=simpl)
    # plot colour map 
    plt.tricontourf(x, y, z, 8, cmap=plt.cm.rainbow, triangles=simpl)

    plt.show()

0 个答案:

没有答案