1

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

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

例子

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

理想情况下,我希望将此参数固定在 ~25 以使颜色图平滑。

看看图片:

这是错误的,int参数= 9

这就是我想要的,但更平滑,int 参数 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()
4

0 回答 0