最后我想要的是平滑的彩色地图,上面绘制了轮廓。这个想法是尽可能多地保留来自 3D 凸包的信息。
问题是我到目前为止开发的代码不适用于所有输入。
例子
如果我将 tricontourf() 整数参数设置为 8 并提供 10 个输入文件,我将得到 8 个可以的图,但 2 个将是纯色的。接下来,如果我将参数更改为 9,我将得到 7 好和 3 奇数。第一步中的一些好的现在是错误的!
理想情况下,我希望将此参数固定在 ~25 以使颜色图平滑。
看看图片:
对我来说重要的是基于凸包进行三角剖分。
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()